2016-04-30 3 views
0

これは私の配列である:私のアレイでは多次元配列内の特定の文字列を含むすべてのキーを検索するにはどうすればよいですか?

array(1) { 
      ["farm"]=> 
      array(2) { 
      ["horse"]=> 
      array(2) { 
       ["horseman"]=> 
       array(4) { 
        ["fred1"]=> 
        string(5)"fred1" 
        ["fred2"]=> 
        string(9) "fred2" 
        ["fred3"]=> 
        string(19) "fred3" 
        ["fred4"]=> 
        string(24) "fred4" 
       } 
       ["cat"]=> 
       array(1) { 
       ["john"]=> 
       string(4) "john" 
       } 
      } 
      ["folder2"]=> 
      array(1) { 
       ["cat"]=> 
       array(2) { 
       ["sam"]=> 
       string(3) "sam" 
       ["cat"]=> 
       array(1) { 
        ["john"]=> 
        string(4) "john" 
       } 
       } 
      } 
      } 
     } 

、私はキーhorseを探しています:

$srch = "horse"; 

function findKey($array, $keySearch){ 
    foreach ($array as $key => $item) { 
     if (strpos($key, $keySearch) !== false) { 
      echo "<li>".$key."</li>""; 
     } 
     else { 
      if (is_array($item) && findKey($item, $keySearch)) { 
       echo "<li>".$key."</li>""; 
      } 
     } 
    } 
} 

echo findKey($array, $srch); 

私の結果は次のとおりです。

  • しかし、私私の結果は次のようになります:

  • 騎手
  • 答えて

    2

    キーと比較し、サブアレイでの検索は、2つの独立した段階

    function findKey($array, $keySearch) { 
        foreach ($array as $key => $item) { 
         if (strpos($key, $keySearch) !== false) 
          echo "<li>".$key."</li>"; 
         if (is_array($item)) 
          findKey($item, $keySearch); 
        } 
    } 
    
    +0

    はありがとうございます!私はあなたのコードをテストしましたが、私はブランクページを取得します – Jarla

    +0

    いくつかの '}'がありませんが、これとは別にあなたのコードはうまくいっています! – Jarla

    +0

    お手伝いします。がんばろう! – splash58

    関連する問題