📅  最后修改于: 2023-12-03 15:33:37.262000             🧑  作者: Mango
在 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
)
)
使用此函数,我们可以很容易地在多维数组中按值搜索。我们可以通过简单地遍历数组并比较值来寻找匹配项,并且可以递归搜索包含子数组的多维数组。