/**
* 数组中根据指定的条件进行搜索
* @param $data array 要搜索的目标数组
* @param $key string 键
* @param $value mixed 值
*
* @return array
* */
function search_data($data, $key, $value)
{
$result = [];
// 循环目标数组
foreach ($data as $k => $v) {
// 判断当前值中是否存在搜索的key,不存在则跳过
if (!isset($v[$key])) {
continue;
}
// 判断要搜索的值是否为数组
if (is_array($value)) {
// 是数组,判断当前值中是否存在要搜索的值
if (in_array($v[$key], $value)) {
$result[] = $v;
}
} else {
// 不是数组,判断当前值是否等于要搜索的值
if (($v[$key] == $value)) {
$result[] = $v;
}
}
}
return $result;
}
示例:
$test_list = [
['id' => 1, 'title' => '测试1', 'parent_id' => 0],
['id' => 2, 'title' => '测试2', 'parent_id' => 0],
['id' => 3, 'title' => '测试3', 'parent_id' => 0],
['id' => 4, 'title' => '测试4', 'parent_id' => 0],
['id' => 5, 'title' => '测试-子1', 'parent_id' => 1],
['id' => 6, 'title' => '测试-子2', 'parent_id' => 2],
['id' => 7, 'title' => '测试5', 'parent_id' => 0],
['id' => 8, 'title' => '测试-子3', 'parent_id' => 1],
['id' => 9, 'title' => '测试-子2-1', 'parent_id' => 6],
['id' => 10, 'title' => '测试-子1-1', 'parent_id' => 5],
];
$res = search_data($test_list, 'parent_id', 0);
var_dump($res);
结果:
/*
array(5) {
[0]=>
array(3) {
["id"]=>
int(1)
["title"]=>
string(7) "测试1"
["parent_id"]=>
int(0)
}
[1]=>
array(3) {
["id"]=>
int(2)
["title"]=>
string(7) "测试2"
["parent_id"]=>
int(0)
}
[2]=>
array(3) {
["id"]=>
int(3)
["title"]=>
string(7) "测试3"
["parent_id"]=>
int(0)
}
[3]=>
array(3) {
["id"]=>
int(4)
["title"]=>
string(7) "测试4"
["parent_id"]=>
int(0)
}
[4]=>
array(3) {
["id"]=>
int(7)
["title"]=>
string(7) "测试5"
["parent_id"]=>
int(0)
}
}
*/