2017-03-14 85 views
1

我得多維數組的元素,我有這樣的解決方案,但我認爲這是一個粗魯的解決方案... 是否有這個問題更好的方法?最佳方式遞歸PHP數組

function extractElement($array, $element) { 

    $match = []; 

    foreach ($array as $key => $value) { 
     if (is_array($value)) { 
      if ($innerMatch = extractElement($value, $element)) { 
       foreach ($innerMatch as $innerKey => $innerValue) { 
        array_push($match, $innerValue); 
       } 
      } 
     } else { 
      if ($value === $element) { 
       array_push($match, $value); 
      } 
     } 
    } 

    return $match; 

} 

$array = [1, 4, [4], [1, 2, 3, 4, [1, 2, 4, 4]]]; 

extractElement($array, 4); 

輸出:

Array 
(
    [0] => 4 
    [1] => 4 
    [2] => 4 
    [3] => 4 
    [4] => 4 
) 

回答

1

可以使用array_walk_recursive功能

function extractElement($array, $element) { 

    $match = []; 

    array_walk_recursive($array, 
      function ($v) use (&$match, $element) { 
       if ($v == $element) $match[] = $v; 
       }); 
    return $match; 
} 

demo on eval.in