php - 从对象排序数组

标签 php arrays

我有一个对象并将其存储在数组中。 但是,当从对象输出名称时,我想按“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 教师。

查看此文档以了解数组的回调排序。

https://www.php.net/manual/en/function.usort.php

关于php - 从对象排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69258445/

相关文章:

javascript - 显示服务器时间,包括时区偏移

javascript - 多维数组和循环的问题

c++ - 打印 ppm 文件的数组时出现问题

java - 在 Java 中将一个数组中的特定元素添加到另一个数组中

c - 我的开关盒出现错误

php - 如何设置入站邮件 Controller 以便用户可以向唯一的电子邮件地址发帖?

php - 如何给大量类方法 "almost"相同的代码

php - 自动完成地址表跨两个表

python - 如何删除 numpy 数组中所有 numpy 数组中的第 n 个元素?

php - CCK字段输出静态html内的值