2017-03-14 11 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

あなたは

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

array_walk_recursive機能を使用することができます
関連する問題