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


How can I find a all keys inside my multidimensional array that contain a specific string?

这是我的数组:

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);

我的结果是:

  • 但我预计我的结果是:

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

    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); 
        }
    }