您可以
usort()用来精确指示如何对数组进行排序。在这种情况下,
$order可以在比较函数中使用该数组。
下面的示例使用a
closure使生活更轻松。
$order = array(3452342, 5867867, 7867867, 1231233);$array = array( array('id' => 7867867, 'title' => 'Some Title'), array('id' => 3452342, 'title' => 'Some Title'), array('id' => 1231233, 'title' => 'Some Title'), array('id' => 5867867, 'title' => 'Some Title'),);usort($array, function ($a, $b) use ($order) { $pos_a = array_search($a['id'], $order); $pos_b = array_search($b['id'], $order); return $pos_a - $pos_b;});var_dump($array);这项工作的关键是使要比较的值成为
ids在
$order数组中的位置。
比较功能通过找到要在
$order数组中进行比较的两个项目的id的位置来工作。如果在数组中位于
$a['id']before
,则该函数的返回值将为负(该值较小,因此“
floats”位于顶部)。如果在此之后出现,则该函数返回一个正数(该数较大,因此“沉”下来)。
$b['id']``$order``$a``$a['id']``$b['id']``$a
最后,使用闭包没有特殊的原因。这只是我快速编写此类一次性函数的首选方法。它可以同样使用正常的命名函数。



