$arr = array(
array('name' => 'alistair', 'id' => 344),
array('name' => 'barney', 'id' => 333),
array('name' => 'carlos', 'id' => 100),
);
$order = array(1 => 'carlos', 'alistair', 'barney');
usort($arr, function($a, $b) use($order) {
$a_index = array_search($a['name'], $order);
if (!$a_index) {
$a_index = 999;
}
$b_index = array_search($b['name'], $order);
if (!$b_index) {
$b_index = 999;
}
return $a_index - $b_index;
});
var_dump($arr);
以 php4 友好的方式也是如此:
$arr = array(
array('name' => 'alistair', 'id' => 344),
array('name' => 'barney', 'id' => 333),
array('name' => 'carlos', 'id' => 100),
);
usort($arr, 'sorting_function');
function sorting_function($a, $b)
{
$order = array(1 => 'carlos', 'alistair', 'barney');
$a_index = array_search($a['name'], $order);
if (!$a_index) {
$a_index = 999;
}
$b_index = array_search($b['name'], $order);
if (!$b_index) {
$b_index = 999;
}
return $a_index - $b_index;
}
var_dump($arr);