2013-05-16 84 views
1

好的,所以我試圖去理解多維數組,我知道他們是什麼以及他們做了什麼。回答多維數組中的所有內容

在下面的例子中,我創建了一個Cars array(可能不是最有效的方法)。

在這個數組中,我有兩個其他變量包含數組,其中一個用於模型,另一個用於顏色。

我正在尋找的結果是爲每個汽車汽車迴應出所有車型和顏色。

例如

寶馬轎車紅色,寶馬兩廂紅色寶馬紅村,寶馬轎車綠, 寶馬兩廂綠化等等等等

到目前爲止,在下面的代碼,我可以得到汽車的製造,但它隨後響應陣列陣列。

<?php 
$colours = array("red","green","blue"); 
$models = array("hatchback","saloon","estate"); 
$cars= array(
     array("Bmw",$colours,$models), 
     array("Volvo",$colours,$models), 
     array("VW",$colours,$models), 
     array("Mercedes",$colours,$models) 
    ); 
foreach ($cars as $innerArray){ 
    foreach ($innerArray as $value) { 
     echo $value . '<br/>'; 
    } 
} 
?> 

我知道foreach語句是錯誤的,但這就是我卡住的地方。如果你能幫助我,或者更好地解釋它背後的邏輯,那就太棒了!

+0

如果'$ value'是一個數組,則需要遞歸調用。 –

+0

您想要以特定模式打印輸出或者只是隨機輸出... ??? –

+0

特定圖案。我想要foreach循環來回應每個車的所有變化。我不想簡單地打印出陣列。 – user2390439

回答

0

我不會試圖合併你的數組,這就是你的循環的目的。保持簡單 - 顏色陣列有顏色,模型有模型,汽車有汽車。然後循環中的變量名更有意義,並且更容易循環。你所要做的就是循環每一個。

$colours = array("red","green","blue"); 
$models = array("hatchback","saloon","estate"); 
$cars = array("Bmw","Volvo","VW","Mercedes"); 

foreach($cars as $car) 
{ 
    foreach($colours as $colour) 
    { 
     foreach($models as $model) 
     { 
      echo $car.' '.$colour.' '.$model.'<br>'; 
     } 
    } 
} 
+0

儘管它沒有解釋多維陣列問題,但這個解決方案很有意義並且有效。有時候最好不要讓事情複雜化。謝謝邁克爾。 – user2390439

2

在你的數組'cars'中有字符串和數組,所以當你回顯$值時,你試圖迴應一個數組2/3的時間。

如果你只是想呼應的東西,我會建議你使用

的print_r()

0

您的$值有時是一個字符串,有時一個數組。回聲不適用於陣列。嘗試var_dump而不是echo。

foreach ($cars as $innerArray){ 
foreach ($innerArray as $value) 
    {var_dump($value); 
} 
    } 
1

其他asnwers應該爲你工作得很好,只是要完整,這裏是array_walk_recursive代碼:

function walkFunction($value,$key) { 
    echo "$key: $value<br/>"; 
} 

array_walk_recursive($cars,"walkFunction"); 
+0

此代碼不會輸出他想要的內容。 –

0

試試這個:

$r = count($cars); 

for ($row = 0; $row < $r; $row++) 
{ 
    echo "<ul>"; 

    for ($col = 0; $col < 3; $col++) 
    { 
     echo "<li>".$cars[$row][$col]."</li>"; 
    } 

    echo "</ul>"; 
}