PHP匿名函数

时间:2011-01-21 16:01:45

标签: php

  

可能重复:
  Anonymous functions pre PHP 5.3.0

您好,

我该怎么办

$ar = array_filter($ar, function($el) {
    $search = 'New York';
    $name = $ar['name'];
    $potentialNumber = substr($name, strlen($search));
    return ((substr($name, 0, strlen($search)) == $search) && // starts with NY
            ($potentialNumber == '' || is_numeric($potentialNumber)); // [0-9]*
});

在PHP 5.3之前?

4 个答案:

答案 0 :(得分:2)

最接近的是使用create_function来模仿lambda函数http://php.net/manual/en/function.create-function.php

答案 1 :(得分:0)

如你所知,你不能在5.3之前使用匿名函数/闭包,所以明智的解决方案是在本地范围内定义一个函数(通过使用create_function或通常)您当前所在的功能/方法。

答案 2 :(得分:0)

此处示例#1中显示的方式为:http://php.net/manual/en/function.array-filter.php

答案 3 :(得分:0)

只需使用回调。

$ar = array_filter($ar, "myFunction");

function myFunction($el) {
    $search = 'New York';
    $name = $ar['name'];
    $potentialNumber = substr($name, strlen($search));
    return ((substr($name, 0, strlen($search)) == $search) && // starts with NY
            ($potentialNumber == '' || is_numeric($potentialNumber)); // [0-9]*
}

如果你在一个类而不是全局代码中,那么传递给array_filter的回调应该是array(this, 'myFunction')