如何在PHP数组中按多个键 => 值进行搜索?
在多维数组中,如果不存在唯一的键 => 值对(超过一对键 => 值),那么在这种情况下,如果我们通过单个键 => 值对搜索元素,则它可以返回更多比一项。因此,我们可以使用多个键 => 值对来实现搜索以获取唯一项。
方法:对于数组中的每个数组,遍历搜索数组,如果任何搜索键值与对应的数组键值不匹配,我们丢弃该数组并继续下一个数组的过程。让我们通过一个例子更好地理解这一点:
假设我们要从包含不同部分学生的学生列表中搜索学生详细信息,因此,在这种情况下,单独使用 rollNo 可能无法给出正确的输出。因此,我们需要使用两个键 => 值(即 rollNO 和 section)来搜索列表。
例子:
value pairs in array
function search($array, $search_list) {
// Create the result array
$result = array();
// Iterate over each array element
foreach ($array as $key => $value) {
// Iterate over each search condition
foreach ($search_list as $k => $v) {
// If the array element does not meet
// the search condition then continue
// to the next element
if (!isset($value[$k]) || $value[$k] != $v)
{
// Skip two loops
continue 2;
}
}
// Append array element's key to the
//result array
$result[] = $value;
}
// Return result
return $result;
}
// Multidimensional array for students list
$arr = array(
1 => array(
'rollNo' => 44,
'name' => 'Alice',
'section' => 'B'
),
2 => array(
'rollNo' => 3,
'name' => 'Amit',
'section' => 'B'
),
3 => array(
'rollNo' => 3,
'name' => 'Bob',
'section' => 'A'
),
4 => array(
'rollNo' => 5,
'name' => 'Gaurav',
'section' => 'B'
),
5 => array(
'rollNo' => 5,
'name' => 'Gaurav',
'section' => 'A'
)
);
// Define search list with multiple key=>value pair
$search_items = array('rollNo'=>5, 'section'=>"A");
// Call search and pass the array and
// the search list
$res = search($arr, $search_items);
// Print search result
foreach ($res as $var) {
echo 'RollNo: ' . $var['rollNo'] . '
';
echo 'Name: ' . $var['name'] . '
';
echo 'Section: ' . $var['section'] . '
';
}
?>
输出:
RollNo: 5Name: GauravSection: A