📅  最后修改于: 2023-12-03 15:18:28.150000             🧑  作者: Mango
在PHP中,我们经常需要在多维数组中搜索多个值,以找出符合条件的项。本文将介绍两种方法来实现这个功能。
我们可以编写一个递归函数来搜索多维数组中的值。该函数将接受两个参数,第一个参数为需要搜索的数组,第二个参数为需要查找的值。
function searchArray($array, $value) {
$results = array();
foreach ($array as $subarray) {
if (is_array($subarray)) {
$results = array_merge($results, searchArray($subarray, $value));
} else {
if ($subarray == $value) {
$results[] = $subarray;
}
}
}
return $results;
}
我们可以使用该函数在多维数组中搜索一个值:
$array = array(
array('name' => 'John', 'age' => 25),
array('name' => 'Amy', 'age' => 30),
array('name' => 'Bob', 'age' => 25)
);
$results = searchArray($array, 25);
print_r($results);
输出:
Array
(
[0] => 25
[1] => 25
)
但是如果我们需要搜索多个值呢?我们可以对函数进行修改,使其接受一个数组作为第二个参数,然后对数组中的每个值都进行搜索。
function searchArray($array, $values) {
$results = array();
foreach ($array as $subarray) {
if (is_array($subarray)) {
$results = array_merge($results, searchArray($subarray, $values));
} else {
if (in_array($subarray, $values)) {
$results[] = $subarray;
}
}
}
return $results;
}
我们可以使用该函数在多维数组中搜索多个值:
$array = array(
array('name' => 'John', 'age' => 25),
array('name' => 'Amy', 'age' => 30),
array('name' => 'Bob', 'age' => 25)
);
$results = searchArray($array, array(25, 'Amy'));
print_r($results);
输出:
Array
(
[0] => 25
[1] => 25
[2] => Amy
)
另一种方法是使用PHP内置的array_filter函数。该函数将接受两个参数,第一个参数为需要搜索的数组,第二个参数为一个自定义的函数,该函数将根据给定条件返回一个布尔值。array_filter函数将遍历数组的每个元素,并将每个元素传递给自定义的函数进行测试。如果测试返回true,则该元素将包含在结果数组中。
我们可以编写一个自定义的函数,在该函数中对给定的值进行测试:
function searchValues($value) {
return in_array($value, array(25, 'Amy'));
}
我们可以使用该函数和array_filter函数在多维数组中搜索多个值:
$array = array(
array('name' => 'John', 'age' => 25),
array('name' => 'Amy', 'age' => 30),
array('name' => 'Bob', 'age' => 25)
);
$results = array_filter($array, function($subarray) {
return array_filter($subarray, 'searchValues');
});
print_r($results);
输出:
Array
(
[0] => Array
(
[name] => John
[age] => 25
)
[1] => Array
(
[name] => Amy
[age] => 30
)
[2] => Array
(
[name] => Bob
[age] => 25
)
)
本文介绍了在PHP中在多维数组中搜索多个值的两种方法。第一种方法是使用递归函数,该函数将遍历整个数组,并在每个元素上进行测试,以查找符合条件的项。第二种方法是使用PHP内置的array_filter函数,该函数将遍历数组的每个元素,并将每个元素传递给自定义的函数进行测试。无论你使用哪种方法,请根据你的具体需求做出选择。