我有一系列來自資料庫的設定,我需要按天對它們進行排序。每行都有日開始和日結束時間段,每天可以有多個時間段,因此星期一在資料庫中可以有多個記錄。結果來自我在$settings變數下的資料庫。這是我的回圈。
$items = [];
foreach($settings as $setting){
$items[] = [
'day' = $setting->day,
'periods' = [
'start' => $setting->start,
'end' => $setting->end
]
];
}
當前結果:
$items = [
[
'day' => 1,
'periods' => [
'start' => 08:00,
'end' => 17:00
],
[
'day' => 2,
'periods' => [
'start' => 08:00,
'end' => 12:00
],
[
'day' => 2,
'periods' => [
'start' => 14:00,
'end' => 17:00
]
];
想要的結果:
$items = [
[
'day' => 1,
'periods' => [
'start' => 08:00,
'end' => 17:00
],
[
'day' => 2,
'periods' =>
[
'start' => 08:00,
'end' => 12:00
],
[
'start' => 14:00,
'end' => 17:00
]
];
uj5u.com熱心網友回復:
對我來說,獲得所需結果的最佳方法是使用 ->day 作為鍵:
foreach($settings as $setting){
if (empty($items[$setting->day])) {
$items[$setting->day] = [
'day' => $setting->day,
'periods' => [],
];
}
$items[$setting->day]['periods'][] = [
'start' => $setting->start,
'end' => $setting->end
];
}
因此,您可以測驗每天的陣列是否已經存在(使用密鑰),如果不存在,則創建它。如果這一天已經有一些東西,請在 ->periods 中推送一個新條目。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/370968.html
標籤:php
上一篇:php更改無序變數字符
