Php 如何在数组中找到符合条件的值,而不使用for循环?
我有一个这样的数组Php 如何在数组中找到符合条件的值,而不使用for循环?,php,arrays,filtering,Php,Arrays,Filtering,我有一个这样的数组 $a = [ [ "id" => "1", "values" => [ "1", "2" ] ], [ "id" => "2", "values" => [ "1", "3" ] ], [
$a = [
[
"id" => "1",
"values" => [
"1",
"2"
]
],
[
"id" => "2",
"values" => [
"1",
"3"
]
],
[
"id" => "3",
"values" => [
"2",
"4"
]
],
[
"id" => "4",
"values" => [
"4",
"6"
]
],
];
搜索并返回“values”具有2的数组
$result = [
[
"id" => "1",
"values" => [
"1",
"2"
]
],
[
"id" => "3",
"values" => [
"2",
"4"
]
],
];
是的,我可以使用for循环,并使用in_数组返回结果,只是考虑是否有更优雅(更好)的方法来实现它
$result = [];
foreach ($a as $datum) {
if (in_array('2', $datum['values'])) {
$result[] = $datum;
}
}
我尝试了数组搜索,但它不支持嵌套数组
array_search('2',array_列($a',values')
您可以在数组()中使用array\u filter()
和:
有关参考,请参阅:
有关示例,请参见:
阵列过滤器?哦,是的,有没有什么方法可以忽略使用in_数组进行检查?数组过滤器($data,函数($datum){if(在数组('2',$datum['values']){return$datum;}});它是这样的:array_filter($data,function($datum){returnin_array('2',$datum['values']);});
$value = '2';
$result = array_filter($a, function (array $element) use ($value) {
return array_key_exists('values', $element)
&& is_array($element['values'])
&& in_array($value, $element['values'], true);
});
var_dump($result);