如何在不使用for循环的情况下在数组中找到符合条件的值?

时间:2017-08-20 01:14:06

标签: php arrays filtering

我有一个像这样的数组

$result = [];
foreach ($a as $datum) {
    if (in_array('2', $datum['values'])) {
        $result[] = $datum;
    }
}

搜索并返回'values'有2

的数组
array_search('2', array_column($a, 'values'));

是的,我可以使用for循环,并使用in_array返回结果,只是想想是否有优雅(更好)的方法来做它?

imgur

我尝试了array_search,但它不支持嵌套数组

credits

1 个答案:

答案 0 :(得分:2)

您可以使用array_filter()in_array()

$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);

供参考,见:

有关示例,请参阅: