2012-09-07 2 views
0

Я преподаю себя PHP и у меня есть следующий вопрос о массивах:PHP: новый массив из нескольких массивов

у меня есть:

$names = array('John', 'Alice', 'Tom'); 
    $cities = array('London', 'NY', 'Boston'); 
    $years = array('1999', '2010', '2012'); 
    $colors = array('red', 'blue', 'green'); 

Я хочу, чтобы новый массив с этими элементами (три подмассивы):

John London 1999 red 
Alice NY 2010 blue 
Tom Boston 2012 green 

я делаю

$newArray = array($names,$cities, $years,$colors); 

Но это показывает все имена, города и так все вместе :(Пожалуйста, покажите мне, как этого достичь.

Большое спасибо!

ответ

0

Если Вы хотите, чтобы три списка, чтобы быть массивами с каждым значением элемента в суб массиве, сделайте следующее:

$names = array('John', 'Alice', 'Tom'); 
$cities = array('London', 'NY', 'Boston'); 
$years = array('1999', '2010', '2012'); 
$colors = array('red', 'blue', 'green'); 

$final_array = array(); 

foreach($names as $count => $name){ 
    array_push($final_array,array($name,$cities[$count],$years[$count],$colors[$count])); 
} 

var_export($final_array); 

Это дает выход:

array (
    0 => 
    array (
    0 => 'John', 
    1 => 'London', 
    2 => '1999', 
    3 => 'red', 
), 
    1 => 
    array (
    0 => 'Alice', 
    1 => 'NY', 
    2 => '2010', 
    3 => 'blue', 
), 
    2 => 
    array (
    0 => 'Tom', 
    1 => 'Boston', 
    2 => '2012', 
    3 => 'green', 
), 

Если вы хотите, чтобы результат был массивом строк, используйте ответ Михая.

+0

спасибо триллион !! –

1

Использование foreach():

$newArray = array(); 

foreach($names as $num => $name){ 
    $newArray[] = $name." ".$cities[$num]." ".$years[$num]." ".$colors[$num]; 
} 

var_export($newArray); 

Codepad Example

0

Или вы можете использовать "для"

$count = count($names); 
$new_array = array(); 
for($i=0;$i < $count; $i++) { 
     $new_array[] = array($names[$i], $cities[$i], $years[$i],$colors[$i]); 
} 
0

Чтобы получить такой вывод -

John London 1999 red

Alice NY 2010 blue

Tom Boston 2012 green

Вы должны сделать следующее

$result = array(); 
foreach($names as $key=>$value){ 
$result[]='<pre>'.$value.' '.$cities[$key].' '.$years[$key].''.$colors[$key].'</pre>'; 
} 

Затем лопаются сгенерированного массиву

$output=implode('',$result); 
echo $output; 
Смежные вопросы