Способ сделать это - отделить массив значений от массива объектов и, таким образом, создать два массива. Затем вы можете использовать array_multisort для сортировки массива объектов по другому массиву. Вот пример:
<?php
$array1 = $objectvalues
$array2 = array(ObjectWithNid1, ObjectWithNid2, ObjectWithNid3, ObjectWithNid4);
array_multisort($array1, $array2);
?>
Вы можете использовать foreach для однократного зацикливания массива и создания нового массива с соответствующим ключом [value]:
<?php
foreach( $arraywithobjects as $obj )
{
$objectvalues[] = $obj->getValue();
}
?>
Это позволит получить значение объекта и вставить его в другой массив, который вы можете использовать с мультисортированием.
В конце ваш код будет выглядеть так:
<?php
foreach( $arraywithobjects as $obj )
{
$objectvalues[] = $obj->getValue();
}
$array2 = array(ObjectWithNid1, ObjectWithNid2, ObjectWithNid3, ObjectWithNid4);
array_multisort($objectvalues, $array2);
?>
Первый массив в поле array_multisort должен быть массивом, который вы используете для сортировки второго массива.
Для этого вы также можете добавить другой метод сортировки. Вы можете прочитать их здесь: текст ссылки