2016-08-16 36 views
0

我有一个问题,使用此代码以获得适当的结果。未定义的变量使用函数功能

我的代码:

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;,就像我发布的代码一样。

+1

http://php.net/manual/en/functions.anonymous.php#example-203 –

+0

'$ content'是不是在匿名函数的范围。在这种情况下你可以使用'use'。 –

+0

@PaulCrovella谢谢你,这解决了我的问题。 –

回答

1

您需要使用$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]; 
} 

Manual has more details and examples

0

要么 A)如果您有全局范围中先前定义的$内容,请使用您拥有的全局并移除$ content参数。 或 B)删除全局声明并传递使用$ content参数的内容。 PS:正如其他人指出的那样,你需要在匿名函数上使用use()...但是也要传递参数或者走向全局,不要两者兼而有之。

0

的array_filter()函数过滤值使用回调函数的数组。

该函数将输入数组的每个值传递给回调函数。如果回调函数返回true,则来自输入的当前值将返回到结果数组中。数组键被保留。

http://www.w3schools.com/php/func_array_filter.asp

希望这有助于:)