使用PHP在foreach中过滤数组

时间:2019-04-30 21:04:54

标签: php

我想用另一个数组名值过滤我的数组!这里是17、18

$myarray = Array
 (
   [0] = Array
    (
        [name] = 17
    )

    [1] = Array
    (
        [name] = 18
    )

)

$filterBy = $myarray; 

$new = array_filter($result, function ($var) use ($filterBy) {
return ($var['name'] == $filterBy);
});

print_r($new);

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

我猜这就是您真正想要的:

$filterBy = array_column($myarray, 'name');
$new = array_filter($result, function ($var) use ($filterBy) {
    return in_array($var['name'], $filterBy);
});

这会通过查找元素名称也为$result中的元素来过滤$myarray

您可以通过将名称转换为关联数组的键来提高效率:

$filterBy = array_flip(array_column($myarray, 'name'));
$new = array_filter($result, function ($var) use ($filterBy) {
    return isset($filterBy[$var['name']]);
});