📜  PHP 多维数组按值搜索 - PHP (1)

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

PHP 多维数组按值搜索 - PHP

在 PHP 中,多维数组是使用一个数组来存储另一个数组的数组。在许多情况下,我们需要在多维数组中按值搜索。这时,我们需要遍历整个多维数组并比较它们的值,寻找匹配项。

代码实现

以下是一个简单的 PHP 函数,用于按值搜索多维数组:

/**
 * 按值搜索多维数组
 *
 * @param $needle string 需要搜索的值
 * @param $haystack array 要搜索的多维数组
 * @return array 包含匹配值的数组元素
 */
function array_value_search($needle, $haystack) {
    $matches = array();

    foreach ($haystack as $key => $value) {
        if (is_array($value)) { // 如果这是一个数组,递归搜索子数组
            $matches = array_merge($matches, array_value_search($needle, $value));
        } else { // 如果这是一个值,比较它是否匹配
            if ($value === $needle) {
                $matches[] = array('key' => $key, 'value' => $value);
            }
        }
    }

    return $matches;
}
使用方法

使用该函数,我们可以轻松地在多维数组中按值搜索:

$array = array(
    'apple' => 'red',
    'banana' => 'yellow',
    'grape' => array(
        'red',
        'green',
        'purple'
    ),
    'orange' => 'orange',
    'pear' => 'green'
);

$matches = array_value_search('green', $array);

print_r($matches);

输出应该包含匹配项 grape[1]pear:

Array
(
    [0] => Array
        (
            [key] => grape
            [value] => Array
                (
                    [1] => green
                )

        )

    [1] => Array
        (
            [key] => pear
            [value] => green
        )

)
结论

使用此函数,我们可以很容易地在多维数组中按值搜索。我们可以通过简单地遍历数组并比较值来寻找匹配项,并且可以递归搜索包含子数组的多维数组。