Поскольку у вас есть объекты в массиве, вы не сможете использовать какой-либо встроенный метод, кроме usort
, если только вы не захотите привести объекты к массивам:
$referenceArray = ['red', 'green', 'blue'];
$testArray = [obj1, obj2, obj3, obj4];
usort($testArray, function ($x, $y) use ($referenceArray) {
$xIndex = array_search($x->color, $referenceArray); //Is it color or colour?
$yIndex = array_search($y->color, $referenceArray);
return $xIndex <=> $yIndex;
});
Идея состоит в том,: При сравнении объекта $ x и объекта $ y получите индекс цвета $x
и $y
из $referenceArray
и верните сравнение этих индексов.