我正在使用 Laravel 并尝试通过查询填充 HTML 表格。数据库中的表包含列,其中包括 id
、user
和 shift
。大约有 100 个条目,shift
列将包含字母 A
、B
、C
或 D
。我想将它输出到一个 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 导出表格,如果它们是单独的表格,它只是将它们堆叠起来,但我希望它们并排放置。无论如何,这就是我的意思和想要的(带有字母的行将是最终表中的其他信息):
我错过了什么?我觉得我做的事情不是很简单。谢谢你的帮助。
最佳答案
是的,您可以使用 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/