📜  php 检查值是否存在于多维数组中 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:42.852000             🧑  作者: Mango

PHP检查值是否存在于多维数组中

在PHP中,检查值是否存在于多维数组中是一个常见的需求。有很多方法可以实现这个目标,其中一些比其他方法更有效。

本文将介绍PHP中检查值是否存在于多维数组中的最佳实践。

方法一:使用array_walk_recursive函数
function search_array($needle, $haystack)
{
    $found = false;
    array_walk_recursive($haystack, function ($value) use ($needle, &$found) {
        if ($needle == $value) {
            $found = true;
        }
    });
    return $found;
}

以上代码利用array_walk_recursive函数遍历了多维数组,当找到与指定值相同的元素时,返回true。否则返回false。

方法二:使用递归函数
function search_array($needle, $haystack)
{
    foreach ($haystack as $value) {
        if (is_array($value) && search_array($needle, $value)) {
            return true;
        } elseif ($needle == $value) {
            return true;
        }
    }
    return false;
}

以上代码使用递归函数遍历多维数组,当找到与指定值相同的元素时,返回true。否则返回false。

方法三:使用PHP 7中的array_key_exists_recursive函数
function array_key_exists_recursive($key, $array)
{
    if (array_key_exists($key, $array)) {
        return true;
    }
    foreach ($array as $value) {
        if (is_array($value) && array_key_exists_recursive($key, $value)) {
            return true;
        }
    }
    return false;
}

// 示例用法:
$array = [
    'foo' => [
        'bar' => [
            'baz' => 42,
        ],
    ],
];
var_dump(array_key_exists_recursive('baz', $array));

以上代码使用array_key_exists_recursive函数在多维数组中搜索是否存在指定的键。如果找到键,返回true。否则返回false。

总结

以上是在PHP中检查值是否存在于多维数组中的最佳实践。你可以选择最适合你的方法来实现你的需求。在上述方法中,使用array_walk_recursive和递归函数的方法在PHP中是最常见的方法。而在PHP 7中,使用array_key_exists_recursive函数来检查键是否存在于多维数组中也是一个好的选择。