Tengo un objeto y lo almaceno en una matriz. Sin embargo, al generar los nombres del objeto, quiero ordenarlos por 'is_main'. Por lo tanto, 'is_main' con el valor 1 siempre debe estar en primer lugar y luego 'is_main' con el valor 0. Aquí está el Objeto
array(2){ [ 1 ]=> object(stdClass)#3729 (22){ [ "id_teacher" ]=> string(1)"2"[ "firstname" ]=> string(6)"John"[ "lastname" ]=> string(8)"Doe"[ "is_main" ]=> string(1)"0" }[ 2 ]=> object(stdClass)#3723 (22){ [ "id_teacher" ]=> string(1)"2"[ "firstname" ]=> string(6)"John"[ "lastname" ]=> string(8)"Brown"[ "is_main" ]=> string(1)"1" } }Y mi código PHP:
$storage = array(); foreach($data->class_teacher_arr[$item->id_class] as $reference) { $storage[] = $reference->firstname . ' ' . $reference->lastname . ' ' . $reference->is_main; } echo implode('<br/>', $storage);Espero que alguien me pueda ayudar con este problema.
Puede usar usort con una devolución de llamada que define lo que está buscando en la función de clasificación.
$teachers = $data->class_teacher_arr[$item->id_class]; usort($teachers, function ($teacher) { return isset($teacher->is_main) && !$teacher->is_main; }); $storage = array(); foreach($teachers as $reference) { $storage[] = $reference->firstname . ' ' . $reference->lastname . ' ' . $reference->is_main; } echo implode('<br/>', $storage);Si el valor is_main está establecido y es verdadero (es igual a 1), irá a la parte superior de la matriz y una vez que repita su variable de almacenamiento, verá todos los maestros is_main en la parte superior.
Consulte esta documentación para la clasificación de matrices de devolución de llamada.