gpt4 book ai didi

array_filter 内部的 PHP 变量作用域问题

转载 作者:行者123 更新时间:2023-12-02 03:45:38 26 4
gpt4 key购买 nike

我来自 JS 世界,无法理解这段代码:

function getCountryName($code, $codes){
print_r($code);

array_filter(
$codes,
function ($e) {
if($e->cca2 == $code){
print_r($e->name->common);
}
}
);
}

第二行仅用于调试,它打印给定的 $code。但这里: if($e->cca2 == $code){ $code 似乎未定义。这怎么可能呢?它适用于 $GLOBALS['code'] 但我不想使用全局变量。为什么 array_filter 无法访问它自己的作用域?

最佳答案

$code 位于 getCountryName() 的范围内。然后,您将获得 array_filter() 的回调,它是一个匿名函数,并且有自己的作用域。要访问该变量,您需要 use它将使回调从其父作用域(函数)继承变量:

function getCountryName($code, $codes){
print_r($code);
array_filter(
$codes,
function ($e) use ($code) {
if($e->cca2 == $code){
print_r($e->name->common);
}
}
);
}

关于array_filter 内部的 PHP 变量作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com