1

さて、多次元配列のこつをつかもうとしています。それらが何であり、何をするかを知っています。

以下の例では、(おそらく最も効率的な方法ではない) を作成しましたCars array

この配列には、配列を含む他の 2 つの変数があります。1 つはモデル用、もう 1 つは色用です。

私が探している結果は、各車のすべてのモデルと色をエコーアウトすることです。

例えば

Bmw レッド サルーン、Bmw レッド ハッチバック、Bmw レッド エステート、Bmw グリーン サルーン、Bmw グリーン ハッチバックなど。

これまでのところ、次のコードでは車の型式を取得できますが、配列配列がエコーされます。

<?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 ステートメントが間違っていることはわかっていますが、ここで行き詰まっています。あなたが私を助けてくれたり、その背後にあるロジックをもっとうまく説明してくれたら、それは素晴らしいことです!

4

6 に答える 6

2

In your array 'cars' there are strings and arrays, so when you echo the $value you are trying to echo an array 2/3 of the times.

If you just want to echo the stuff, I would suggest you to use

print_r()

于 2013-05-16T15:00:32.633 に答える
1

他の答えはあなたのためにうまくいくはずです。完成させるために、ここにarray_walk_recursiveコードがあります:

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

array_walk_recursive($cars,"walkFunction");
于 2013-05-16T15:07:21.810 に答える
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>";
}
于 2013-05-16T15:08:37.647 に答える
0

$value は文字列の場合もあれば、配列の場合もあります。Echo は配列に対しては機能しません。echo の代わりに var_dump を試してください。

 foreach ($cars as $innerArray){
foreach ($innerArray as $value)
    {var_dump($value);
 }
    }
于 2013-05-16T15:02:27.210 に答える
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>';
        }
    }
}
于 2013-05-16T16:11:26.277 に答える