PHP имеет функции, которые помогут вам в этом:
$arrayToBeSorted = array('west', 'east', 'south', 'north');
$order = array('north', 'south', 'east', 'west');
// sort array
usort($arrayToBeSorted, function($a, $b) use ($order){
// sort using the numeric index of the second array
$valA = array_search($a, $order);
$valB = array_search($b, $order);
// move items that don't match to end
if ($valA === false)
return -1;
if ($valB === false)
return 0;
if ($valA > $valB)
return 1;
if ($valA < $valB)
return -1;
return 0;
});
Usort делает всю работу за вас, а array_search предоставляет ключи. array_search () возвращает false, когда не может найти совпадение, поэтому элементы, которых нет в массиве sort, естественным образом перемещаются в конец массива.
Примечание: uasort () упорядочит массив, не затрагивая отношения ключ => значение.