Php 如何在多维数组中找到包含特定字符串的所有键?

Php 如何在多维数组中找到包含特定字符串的所有键?,php,arrays,Php,Arrays,这是我的阵列: array(1) { ["farm"]=> array(2) { ["horse"]=> array(2) { ["horseman"]=> array(4) { ["fred1"]=> string(5)"fred1"

这是我的阵列:

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);
$srch=“horse”;
函数findKey($array,$keySearch){
foreach($key=>$item的数组){
if(strpos($key,$keySearch)!==false){
回显“
  • ”$key.
  • ”; } 否则{ if(is_数组($item)和&findKey($item,$keySearch)){ 回显“
  • ”$key.
  • ”; } } } } echo findKey($array,$srch);
    我的结果是:

  • 但我希望我的结果是:


  • horseman
  • 比较键和在子数组中搜索是两个独立的步骤

    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); 
        }
    }
    
    函数findKey($array,$keySearch){
    foreach($key=>$item的数组){
    if(strpos($key,$keySearch)!==false)
    回显“
  • ”$key.
  • ”; if(is_数组($item)) findKey($item$keySearch); } }
    比较键和在子数组中搜索是两个独立的步骤

    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); 
        }
    }
    
    函数findKey($array,$keySearch){
    foreach($key=>$item的数组){
    if(strpos($key,$keySearch)!==false)
    回显“
  • ”$key.
  • ”; if(is_数组($item)) findKey($item$keySearch); } }
    谢谢!我测试了你的代码,但是我得到了一个blanc页面,其中缺少了一些
    }
    ,但是除此之外,你的代码运行得非常好!很乐意帮忙。祝你好运哦,我发现如果一个数组中有多个数组,它就不会显示。我给你举个例子。一秒钟是的。但是加上“谢谢你!”!我测试了你的代码,但是我得到了一个blanc页面,其中缺少了一些
    }
    ,但是除此之外,你的代码运行得非常好!很乐意帮忙。祝你好运哦,我发现如果一个数组中有多个数组,它就不会显示。我给你举个例子。一秒钟是的。但是加上`