从对象对数组进行排序

脆脆

我有一个对象并将它存储在一个数组中。但是,当从对象输出名称时,我想按“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 与回调一起使用,该回调定义您在 sort 函数中查找的内容。

$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 值并且为真(等于 1),它将到达数组的顶部,一旦您回显出存储变量,您将在顶部看到所有 is_main 教师。

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

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

快乐编码!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章