检查多维数组中是否存在特定的数组键 \- PHP

新手上路,请多包涵

我有一个多维数组,例如(这可能有很多层次):

 $array = Array (
    [21] => Array ( )
    [24] => Array (
        [22] => Array ( )
        [25] => Array (
            [26] => Array ( )
        )
    )
)

我正在尝试遍历它以查看是否存在某个键:

 $keySearch = 22; // key searching for

function findKey($array, $keySearch) {
    foreach ($array as $item){
        if (isset($item[$keySearch]) && false === findKey($item[$keySearch], $item)){
            echo 'yes, it exists';
        }
    }
}

findKey($array, $keySearch);

但它什么也没找到。循环中有错误吗?

原文由 StudioTime 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
2 个回答

我玩了你的代码来让它工作:

 function findKey($array, $keySearch)
{
    foreach ($array as $key => $item) {
        if ($key == $keySearch) {
            echo 'yes, it exists';
            return true;
        } elseif (is_array($item) && findKey($item, $keySearch)) {
            return true;
        }
    }
    return false;
}

原文由 Alexandre Nucera 发布,翻译遵循 CC BY-SA 3.0 许可协议

我确实修改为返回搜索键的值:

 function findKeyInArray($array, $keySearch, &$value)
{
    foreach ($array as $key => $item) {
        if ($key === $keySearch) {
            $value =  $item;
            break;
        } elseif (is_array($item)) {
            findKeyInArray($item, $keySearch,$value);
        }
    }
}
$timeZone = null;
findKeyInArray($request, 'timezone', $timeZone);

原文由 Sanjay Trivedi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题