我基本上有一个PHP函数,它在一个巨大的foreach语句中,需要在那个foreach 中,因为它使用循环中的值。
foreach ($x as $y) {
...
function sortq($a, $b){
if ((int)$a->id == (int)$b->id) {
return 0;
}
return ((int)$a->id < (int)$b->id) ? -1 : 1;
}
usort($sort, 'sortq');
...
}
如何将此功能剥离到通用类或方法中,以便我可以多次调用它?我尝试了'class'路线,但后来在foreach循环中重新声明了类:D
请帮忙!非常感谢
答案 0 :(得分:1)
在function_exists检查中包装函数定义将起作用:
if (!function_exists('sortq')) {
function sortq($a, $b) { ... }
}
如果您可以依赖至少PHP 5.3+,则应使用closure:
usort($sort, function($a, $b) {
if ((int)$a->id == (int)$b->id) {
return 0;
}
return ((int)$a->id < (int)$b->id) ? -1 : 1;
});
编辑:实际上,usort所要求的比较函数的定义是:
如果第一个参数被认为分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
因此,您可以将该功能简化为:
function ($a, $b) { return (int)$a->id - (int)$b->id; }