2017-08-14 78 views
0

不知道我在做什麼錯,但是當我試圖做一個帶有變量的foreach循環時,它回來了Array ArrayForeach回來作爲陣列陣列

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

如果它是多維數組,你需要在這個 – mitch

+0

裏面使用另一個foreach給我,這聽起來像他有一個關聯數組的數組......但是,我同意@mitch。 –

1

如果你有一個多維數組,你需要使用遞歸函數。

一個例子可能是這個

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; 
} 

上述功能,給定的陣列等

$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); 

將返回這樣

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

扁平陣列可能會發現值結果數組中省略了「三」和「六」,因爲它們是關鍵,但是如果要包含它們只需取消註釋// $ output [] = $ key;在函數中。

一旦你有了這個數組,你可以循環使用foreach。 這可能不是你所需要的,但應該給你一個方向。

+0

真棒,謝謝!是的,我正在亂搞一個'foreach'循環嵌套在另一個'foreach'循環中,雖然我得到的結果看起來很雜亂。 – ultraloveninja