我有一个对象并将其存储在数组中。 但是,当从对象输出名称时,我想按“is_main”对它们进行排序。因此,值为 1 的“is_main”应始终位于第一位,然后是值为 0 的“is_main”。 这是对象
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"
}
}
还有我的 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);
我希望有人能帮助我解决这个问题。
最佳答案
您可以将 usort 与回调一起使用,定义您在排序函数中查找的内容。
$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);
如果值 is_main 已设置并且为 true(等于 1),它将转到数组的顶部,一旦您回显存储变量,您将在顶部看到所有 is_main 教师。
查看此文档以了解数组的回调排序。
关于php - 从对象排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69258445/