您好,
我该怎么办
$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之前?
答案 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')