Я хочу отсортировать массив, ссылаясь на положение свойства в другом массиве, например.
$referenceArray = ['red', 'green', 'blue'];
$testArray = [obj1, obj2, obj3, obj4];
foreach($testArray as $object) {
if($object->colour === "red") {
// push to TOP of array
} elseif($object-color == "green") {
// push to MIDDLE of array
} elseif($object->color === "blue") {
// push to BOTTOM o array
}
}
Возможно ли это с помощью встроенного метода сортировки php? или это может быть сделано только так, как я описал выше.
С уважением
Поскольку у вас есть объекты в массиве, вы не можете использовать какой-либо встроенный метод, кроме 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
и вернуть сравнение этих показателей.
Других решений пока нет …