【发布时间】:2012-11-27 17:26:55
【问题描述】:
我找到了一些解决我一直遇到的排序问题的方法,但是代码使用 PHP 中的匿名函数。我使用的是 5.2.17 版本,我认为不支持匿名函数。
如何更改以下代码块以便在 PHP 5.2.17 中使用它们
$keys = array_flip($order);
usort($items, function($a, $b) use($keys)
{
return $keys[$a['id']] - $keys[$b['id']];
});
来自PHP sort multidimensional array by other array
和
$sorted = array_map(function($v) use ($data) {
return $data[$v - 1];
}, $order);
来自PHP - Sort multi-dimensional array by another array
更新: 问题之一是我不确定如何使用变量 $a、$b 和 $v。所以我不确定如何创建普通函数,从而绕过匿名函数。
【问题讨论】:
-
匿名函数是在 5.3 中添加的,所以是的,你是对的......不支持:php.net/manual/en/functions.anonymous.php。通过使用常规的通常定义的函数来解决它。
usort($items, "your_func_here"). -
谢谢 - 问题是我真的不知道匿名函数是如何工作的。例如,我不知道如何使用变量 $a、$b 和 $v。他们来自哪里?
-
将您的函数声明为常规函数,并将它们作为字符串传递。
-
$a 和 $b 只是 usort 传递给您的函数的值,并且是 $item 中考虑的两个数组元素。您可以简单地将回调更改为反向排序,只需将
function($b, $a)作为其参数,而无需考虑实际的比较代码。 -
谢谢马克。我仍然不是 100% 理解你。你能为我构建一个答案中的代码吗?