假设我有一个数组,我想搜索一个应该返回多个结果的值:
array(2) {
[0] => array(2) {
["id"] => string(2) "1"
["custom"] => string(1) "2"
}
[1] => array(2) {
["id"] => string(2) "2"
["custom"] => string(1) "5"
}
[2] => array(2) {
["id"] => string(2) "3"
["custom"] => string(1) "2"
}
}
我想使用custom
搜索关键value = 2
,结果如下:
array(2) {
[0] => array(2) {
["id"] => string(2) "1"
["custom"] => string(1) "2"
}
[1] => array(2) {
["id"] => string(2) "3"
["custom"] => string(1) "2"
}
}
这是否可以不通过数组循环?是否有这样的类或内置函数?
答案 0 :(得分:1)
您可以使用:
array_values( array_filter($array, function($item) { return $item['custom'] == 2; }) );
array_values($array)
用于返回一个连续索引的数组,即从0,1,2,......向上。
答案 1 :(得分:0)
您可以通过从阵列中取消设置来删除您不想要的值:
foreach($array as $key => $item) {
if($item['custom'] !== 2) {
unset($array[$key]);
}
}
这是array_values()
的替代方案,但基本上也是这样做的。
答案 2 :(得分:0)
array_filter
函数可能就是你想要的。
$array = [
[
'id' => '1',
'custom' => '2'
],
[
'id' => '2',
'custom' => '5'
],
[
'id' => '3',
'custom' => '2'
]
];
$customs = array_filter(
$array,
function ($arr) {
return is_array($arr) && array_key_exists('custom', $arr) && $arr['custom'] === '2';
}
);