2017-08-14 17 views
0

私はこの問題に何が間違っているのかよく分かりませんが、foreachループを変数で実行しようとするとArray Arrayが返されます。ForeachがArray Arrayとして戻ってきます

PHPコード:

<?php foreach ($thing as $t) : ?> 
    <?php $thisStuff = $t[stuff]; ?> 
    <?php echo $thisStuff; ?> 
    <?php endforeach; ?> 

出力: Array Array

これはおそらく$thisStuff内の別の配列があることだろうか?もしそうなら、私はそのデータをループしますか?

+5

$ thisStuff内に別の配列が存在する可能性がありますか?_はい。 'print_r($ thing);' – AbraCadaver

+0

私はやりましたが、それは他の配列の束と一緒に戻ってきます。だから、私はどのようにそのデータを構造化するだろうか?それはネストされた配列を実際に使ったことがないので、私が混乱していることです。 – ultraloveninja

+0

[多次元配列のPHP foreach](https://stackoverflow.com/questions/6413589/php-foreach-with-multidimensional-array)の可能な複製 –

答えて

0

は、キー=>値の方法で試してみてください。

<?php foreach ($thing as $key => $value) : ?> 
    // if $value is array, you need to iterate it the same way (additional foreach) 
    <?php echo $value; ?> 
    <?php endforeach; ?> 
+0

連想配列で動作します。多次元配列ではありません。 –

+0

多次元配列の場合は、この内部の別のforeachを使用する必要があります。 – mitch

+0

は、連想配列の配列を持っているように聞こえますが、@mitchは同意します。 –

1

あなたは多次元配列を持っている場合は、再帰関数を使用する必要があります。

例では、値ことに気づくことができる。この

// $output 
    [ 
     "one", 
     "two", 
     "A", 
     "B", 
     "C", 
     "X", 
     "Y", 
     "Z", 
     "five", 
     "sub_one", 
     "sub_two", 
     "sub_A", 
     "sub_B", 
     "sub_C", 
     "seven" 
    ] 

ようなフラット配列を返す

$array = array(
    "one", 
    "two", 
    "three" => array("A","B","C"), 
    "four" => array("X","Y","Z"), 
    "five", 
    "six" => array(
     "sub_one", 
     "sub_two", 
     "sub_three" => array("sub_A","sub_B","sub_C") 
    ), 
    "seven" 
); 
$output = unfoldArray($array); 

様配列を指定し、上記関数この

function unfoldArray($array,$output = array()) { 
    if(is_object($array)) { 
     $array = (array)$array; 
    } 
    foreach($array as $key => $value) { 
     if(is_array($value) || is_object($value)) { 
      //$output[] = $key; 
      $output = unfoldArray($value,$output); 
     } else { 
      $output[] = $value; 
     } 
    } 
    return $output; 
} 

かもしれません"three"と "six"はキーであるため結果配列から省略されますが、それらを含めることができない場合// $ output [] = $ key;行のコメントを外してください。関数内にあります。

この配列を作成したら、foreachを使用してループすることができます。 これはあなたが必要とするものではないかもしれませんが、あなたに指示に従うべきです。

+0

素晴らしいです、ありがとう!うん、私は別の 'foreach'ループで' foreach'ループを入れ子にしていたのですが、結果が得られている間にちょっと混乱しているようです。 – ultraloveninja

関連する問題