2016-12-14 9 views
2

我有一個未定義深度的多維數組。解析通過無序的多維數組只查找字符串

$array = array(
    "foo" => "bar", 
    42 => 24, 
    "multi" => array(
      "dimensional" => array(
      "array" => "foo", 
      "something" => 42, 
      "something2" => [1,2,3] 
     ) 
    ) 
); 

我需要通過它來解析,找出所有平面文字的值,並將其保存在另一個陣列保持途徑。所以,我認爲,最終陣列是這樣的:

$array = array(
    "foo" => "bar", 
    "multi" => array(
      "dimensional" => array(
      "array" => "foo" 
     ) 
    ) 
); 

目前我正在試圖用反覆功能

$this->printAll($array); 

public function printAll($a) 
    { 
     if (!is_array($a)) { 
      echo $a, ' <br>'; // here we can check if it is string and add to the final array 
      return; 
     } 

     foreach($a as $i=>$v) { 
      $this->printAll($v); 
      echo $i; 
     } 
    } 

有人能幫助我弄清楚如何通過迭代不斷指標,並把它在最後一個數組中。

+0

多久,他們陣得到什麼? –

回答

1
<?php 

function printAll($array, &$save) 
{ 
    foreach ($array as $key => $values) 
    { 
     if (! is_numeric($values)) 
     { 
      if (is_array($values)) 
      { 
       printAll($values, $save[$key]); 
      } 
      else 
      { 
       $save[$key] = $values; 
      } 
     } 
    } 
    if (! empty($save)) { 
     $save = array_filter($save); 
    } 
} 

$array = array(
    "foo" => "bar", 
    42 => 24, 
    "multi" => array(
      "dimensional" => array(
      "array" => "foo", 
      "something" => 42, 
      "something2" => [1,2,3] 
     ) 
    ) 
); 

$save = array(); 
printAll($array, $save); 

print_r($save); 

輸出:PHP

Array (
    [foo] => bar 
    [multi] => Array ( 
     [dimensional] => Array ( 
       [array] => foo 
))) 
+0

謝謝,它效果很好! – user2840278