未定义的变量使用函数功能
问题描述:
我有一个问题,使用此代码以获得适当的结果。未定义的变量使用函数功能
我的代码:
function check_txt($url, $content) {
global $content;
$result = get_file_contents($url);
$arr = array_filter($result, function($ar) {
return ($ar['txt'] == $content);
});
return $arr[0];
}
当我执行的代码,我得到这个错误:
Notice: Undefined variable: content in myfile.php
我的问题是如何将内容变量传递给function($ar)
?已经尝试过function($ar, $content)
以及global $content;
,就像我发布的代码一样。
答
您需要使用$content
变量假设它是实际可用的,以使其可在您的annonymous功能
function check_txt($url, $content) {
$result = get_file_contents($url);
$arr = array_filter($result, function($ar) use ($content) {
return ($ar['txt'] == $content);
});
return $arr[0];
}
答
要么 A)如果您有全局范围中先前定义的$内容,请使用您拥有的全局并移除$ content参数。 或 B)删除全局声明并传递使用$ content参数的内容。 PS:正如其他人指出的那样,你需要在匿名函数上使用use()...但是也要传递参数或者走向全局,不要两者兼而有之。
答
的array_filter()函数过滤值使用回调函数的数组。
该函数将输入数组的每个值传递给回调函数。如果回调函数返回true,则来自输入的当前值将返回到结果数组中。数组键被保留。
http://www.w3schools.com/php/func_array_filter.asp
希望这有助于:)
http://php.net/manual/en/functions.anonymous.php#example-203 –
'$ content'是不是在匿名函数的范围。在这种情况下你可以使用'use'。 –
@PaulCrovella谢谢你,这解决了我的问题。 –