php - 在 array_filter 中使用外部变量

标签 php scope array-filter

我有一个数组,我想通过外部变量对其进行过滤。 情况如下:

$id = '1';
var_dump($id);
$foo = array_filter($bar, function($obj){
    if (isset($obj->foo)) {
        var_dump($id);
        if ($obj->foo == $id) return true;
    }
    return false;
});

第一个 var_dump 返回 ID(当然是动态设置的),但是第二个 var_dump 返回 NULL。

谁能告诉我原因,以及如何解决?

最佳答案

变量 $id 不在函数范围内。您需要使用 use 子句使外部变量可访问:

$foo = array_filter($bar, function($obj) use ($id) {
    if (isset($obj->foo)) {
        var_dump($id);
        if ($obj->foo == $id) return true;
    }
    return false;
});

关于php - 在 array_filter 中使用外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25994266/

相关文章:

PHP 删除按钮上的 JavaScript 确认

PHP-FPM 在 macOS 上使用 Nginx 发送空响应

scope - 如何编写不使用其参数隐藏变量的 PicoLisp 函数

java - for循环后全局变量的值不会改变

php - 如何从另一个数组键的值创建一个数组?

PHP - 无法连接到远程 MySQL 数据库

c - C 是否支持作用域解析?

php - 对象上下文中的 Array_filter,带有私有(private)回调

php - PHP array_filter 中的 undefined variable

PHP oAuth POST 请求