2017-07-17 147 views
-2

我有一個多維數組,具有未知數量的內部數組。所以它可能是4,5,6,7等。我想通過Multidimensional數組遍歷並挑出每個6,7和8個鍵。我怎樣才能做到這一點?通過具有未知數量的多維數組循環PHP

我的多維數組

Array 
(
    [0] => Array 
     (
     [0] => Foo 
     [1] => Bar 
     [2] => 
     [3] => 
     [4] => 1234 
     [5] => 5678 
     [6] => 91011 
     [7] => 20170718 
     [8] => TBC 
     [9] => 

    ) 

[1] => Array 
    (
     [0] => Foo 
     [1] => Foo 
     [2] => Bar 
     [3] => 
     [4] => 1111 
     [5] => 2222 
     [6] => 3333 
     [7] => 4444 
     [8] => 5 
     [9] => 

    ) 


[2] => Array 
    (
     [0] => Bar 
     [1] => Foo 
     [2] => Bar 
     [3] => 
     [4] => 7777 
     [5] => 9999999 
     [6] => 33433 
     [7] => 24 
     [8] => 5 
     [9] => 

    ) 

因此,在這個示例中,存在數組[0],陣列[1]和數組[2]。在另一種情況下,可能會達到陣列[15]。結束數組號是未知的。無論Multi維度中有多少個數組,我想要選擇每個數組的第4,5,6和7個元素及其值。

我現在有回聲

foreach($fields as $key => $field) { 

     echo $fields[ $key ]; 

     echo "\n"; 

    } 

輸出

Array 
    Array 
    Array 
    Array 
    Array 
    Array 
    Array 
    Array 
    Array 

這怎麼可能放在一個for循環,使所有的4,5,6,7元素被分配給一個變量並回顯出來?

+2

您應該嘗試**自己編寫代碼**。在[**做更多的研究**之後](https://meta.stackoverflow.com/q/261592/1011527)如果你有問題**發佈你已經嘗試了**的**明確的解釋不工作**並提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。閱讀[如何問](http://stackoverflow.com/help/how-to-ask)一個很好的問題。請務必[參觀](http://stackoverflow.com/tour)並閱讀[this](https://meta.stackoverflow.com/q/347937/1011527)。 –

+0

[foreach](http://php.net/manual/en/control-structures.foreach.php) – smarber

回答

0

試試這個功能

<?php 

$array = Array 
(
    0 => Array 
     (
     0 => "FOO", 
     1 => "BAR", 
     2 => "", 
     3 => "", 
     4 => 1234, 
     5 => 5678, 
     6 => 91011, 
     7 => 20170718, 
     8 => "TBC", 
     9 => "" 
    ), 
1 => Array 
    (
     0 => "Foo", 
     1 => "Foo", 
     2 => "Bar", 
     3 => "", 
     4 => 1111, 
     5 => 2222, 
     6 => 3333, 
     7 => 4444, 
     8 => 5, 
     9 => "", 
    ), 
2 => Array 
    (
     0 => "Bar", 
     1 => "Foo", 
     2 => "Bar", 
     3 => "", 
     4 => 7777, 
     5 => 9999999, 
     6 => 33433, 
     7 => 24, 
     8 => 5, 
     9 => "", 
    ) 
); 

$all4567values = extract4567Elements($array); 

var_dump($all4567values); 
exit; 
function extract4567Elements (array $array) 
{ 
    $elements4567 = []; 

    $index = 0; 
    foreach ($array as $element){ 
     if(is_array($element)){ 
      $elements4567 = array_merge($elements4567, extract4567Elements($element)); 
     }else{ 
      if($index == 4 || $index == 5 || $index == 6 || $index == 7){ 
       $elements4567[] = $element; 
      } 
     } 
     $index++; 
    } 
    return $elements4567; 
} 

此輸出

array(12) { 
    [0]=> 
    int(1234) 
    [1]=> 
    int(5678) 
    [2]=> 
    int(91011) 
    [3]=> 
    int(20170718) 
    [4]=> 
    int(1111) 
    [5]=> 
    int(2222) 
    [6]=> 
    int(3333) 
    [7]=> 
    int(4444) 
    [8]=> 
    int(7777) 
    [9]=> 
    int(9999999) 
    [10]=> 
    int(33433) 
    [11]=> 
    int(24) 
} 

看到一個演示(https://eval.in/833525

請注意,此功能將提取4,5,6,7值如果有更深層次的嵌套數組。