php - 在 PHP 中,有没有办法循环查询并根据值将其组织到特定列中?

标签 php html laravel html-table

我正在使用 Laravel 并尝试通过查询填充 HTML 表格。数据库中的表包含列,其中包括 idusershift。大约有 100 个条目,shift 列将包含字母 ABCD。我想将它输出到一个 HTML 表中,以便在循环时,输出表中的第一列将只保存带有 A 的条目作为该值,第二个 B,等等。

这是我的查询:

Shift::orderBy('shift', 'ASC')
        ->get();

这当然是按字母顺序排序,然后当我循环使用它时:

      ...
  <tbody>
    @foreach ($shifts as $shift)
          <tr>
              <td>{{ $shift->id }}</td>
            ...
           </tr>
      @endforeach
   </tbody>
  ...

或类似的变体,我已经尝试了很多,它将遍历所有带有 A 的条目并在表格中创建这些单元格/行,然后从 B< 开始。但到那时,因为那些已经创建,B 条目开始,但是那里的许多 A 条目都已关闭。

我已经遍历它并创建了四个单独的表,但我更愿意将它合并为一个。我想用 Laravel Excel 导出表格,如果它们是单独的表格,它只是将它们堆叠起来,但我希望它们并排放置。无论如何,这就是我的意思和想要的(带有字母的行将是最终表中的其他信息):

enter image description here

我错过了什么?我觉得我做的事情不是很简单。谢谢你的帮助。

最佳答案

是的,您可以使用 usort 对它们进行排序为此目的而存在。 usort() 将使用用户定义的比较函数按值对数组进行排序。

$arr = [
    ['letter'=>'C'],
    ['letter'=>'A'],
    ['letter'=>'B'],
    ['letter'=>'A'],
    ['letter'=>'D'],
];

// Function to sort by provided column name
function cmp($key){
    // Returns comparision function to be used with usort
    return function($a,$b)use($key){
        return strcmp($a[$key], $b[$key]);
    };
}
usort($arr, cmp('letter'));
print_r($arr);

希望对你有帮助,

关于php - 在 PHP 中,有没有办法循环查询并根据值将其组织到特定列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55484520/

相关文章:

php - 在 Laravel Nova 中创建新资源的异常 - 找不到类 'App\Post'

laravel - 具有 HasMany 关系的过滤器模型

php - 试图创建一个 'trending words/phrases' 引擎但需要过滤掉常用词

php - 如何让我的 functions.php 在全站可用

php - 获取 MySQL 数据库中每个用户的最新条目

php - 如何在laravel中将主键与随机数连接?

php - 找到最高设置位

html - 子容器与父容器宽度相同

javascript - 单击元素以外的任何内容时引发事件

html - CSS:在不改变文本顺序的情况下改变文本溢出的方向