2 回答

TA貢獻1831條經驗 獲得超4個贊
此代碼在創建計劃時創建由日期本身索引的每一天事件,然后當發現新事件時,它將檢查該日期是否已設置。如果是這樣,它將增加計數并添加新事件。唯一的復雜之處是它需要檢查它是否只有 1 個現有條目 - 這需要首先轉換為數組。要刪除索引,首先json_encode()使用array_values()...
while($schedule = $result_data->fetch_assoc()){
//start time conversion into american time
// 24-hour time to 12-hour time
$start_time =date("g:i a", strtotime($schedule['start_time']));
//end time conversion into american time
$end_time =date("g:i a", strtotime($schedule['end_time']));
$my_schedule_start .= $start_time;
$my_schedule_end .= $end_time;
$schedule_date= $schedule['cleaning_date'];
if ( isset($result[$schedule_date])){
// Increment count
$result[$schedule_date][$schedule_date]["number"]++;
// Convert single item to array
if ( !isset($result[$schedule_date][$schedule_date]["dayEvents"][0])) {
$result[$schedule_date][$schedule_date]["dayEvents"] =
[$result[$schedule_date][$schedule_date]["dayEvents"]];
}
// Add in new event to dayEvents
$result[$schedule_date][$schedule_date]["dayEvents"][] = [
"title"=>$schedule['first_name'].' '.$schedule['last_name'],
"status"=>$schedule['cleaning_status'],
"time"=>$start_time .' - '.$end_time
];
}
else {
// Create new days schedule
$result[$schedule_date] = [
"$schedule_date" => [
"number"=>'1',
"badgeClass"=>'',
"url"=>'url',
"dayEvents"=>[
"title"=>$schedule['first_name'].' '.$schedule['last_name'],
"status"=>$schedule['cleaning_status'],
"time"=>$start_time .' - '.$end_time
]
]
];
}
}
header('Content-Type: application/json');
echo json_encode(array_values($result), JSON_PRETTY_PRINT);

TA貢獻1851條經驗 獲得超5個贊
根據我對上面提供的代碼和所需輸出的觀察,您可以執行以下操作:
$scheduledDate = date('Y-m-d');
$my_schedule_start = "";
$my_schedule_end = "";
$finalResult = [];
while($schedule = $result_data->fetch_assoc()){
$start_time =date("g:i a", strtotime($schedule['start_time']));
$end_time =date("g:i a", strtotime($schedule['end_time']));
$my_schedule_start .= $start_time;
$my_schedule_end .= $end_time;
$schedule_date= $schedule['cleaning_date'];
$res = new stdClass;
$res->number = 1;
$res->badgeClass = "";
$res->url = 'url';
$dayEvents = new stdClass;
$dayEvents->title = $schedule['first_name'].' '.$schedule['last_name'];
$dayEvents->status = $schedule['cleaning_status'];
$dayEvents->time = $start_time .' - '.$end_time;
$res->dayEvents = $dayEvents;
$finalResult[] = $res;
}
echo json_encode($finalResult);
這里需要注意的地方:
1.) 我已經根據提供的輸出中的第一個條目給出了代碼庫。如果你想更深入,而不是使用stdClasson $dayEvents,你可以直接聲明$dayEvents為一個數組并stdClass在里面使用 individual 并將其推送到就像我為數組dayEvents所做的那樣。$finalResult
2.) 您可能會收到一個通知,$my_schedule_start并且$my_schedule_end之前沒有聲明,所以我冒昧地在 While 循環之外用空值聲明它們。但請隨時根據您的需要更改它們。
3.)如果$res = new stdClass;不起作用,那么您可以嘗試$res = new \stdClass。
4.)如果您發現任何語法錯誤,請原諒我,因為我也是人類:)
概括:
stdClass 是 PHP 的內部功能,用于在 PHP 中聲明對象。您還可以使用短語$dayEvents = {};法代替$dayEvents = new stdClass;.
您可以在此處找到有關 stdClass 的更多信息
希望這可以幫助。
- 2 回答
- 0 關注
- 153 瀏覽
添加回答
舉報