【发布时间】:2020-01-20 23:44:10
【问题描述】:
所以我试图制作一个多维数组,在他们的日期下插入日期。但是,这些日期仅显示来自数据库的日期之一。它看起来也像是在重演。最终,我的目标是让所有日期都在他们尊敬的日子里。
我尝试了什么:
-array_push,尝试将新数据推送到数组中。
-A for循环
处理代码
$currentDate = new Date();
$month = $currentDate->getCurrentDate()->format("m");
$year = $currentDate->getCurrentDate()->format("Y");
$availableCollection = new AvailabilitiesCollection();
try {
$availableCollection->add(Availability::getByMonthAndYear($this->db, $month, $year));
$availabilities = $availableCollection->get();
foreach ($availabilities as $this->availability ){
$this->date = new \DateTime($this->availability['date']);
$this->dayLabel = $this->date->format('D');
$this->dataDb[] = $this->dayLabel;
}
$count = array_count_values($this->dataDb);
foreach ($availabilities as $this->availability) {
$this->date = new \DateTime($this->availability['date']);
$this->dayLabel = $this->date->format('D');
$this->insertAvailabilityInDays[$this->dayLabel] = array();
$availableData = array(
'id' => $this->availability['reservation_id'],
'date' => $this->availability['date'],
'start_at' => $this->availability['start_at'],
'end_at' => $this->availability['end_at']
);
array_push($this->insertAvailabilityInDays[$this->dayLabel], $availableData);
// for($i = 0; $i < $count[$this->dayLabel]; $i++){
// $availableData = array(
// 'id' => $this->availability['reservation_id'],
// 'date' => $this->availability['date'],
// 'start_at' => $this->availability['start_at'],
// 'end_at' => $this->availability['end_at']
// );
//
// array_push($this->insertAvailabilityInDays[$this->dayLabel], $availableData);
// }
var_dump($this->insertAvailabilityInDays);
continue;
}
// var_dump($this->insertAvailabilityInDays);
// exit;
} catch (\Exception $e) {
$this->logger->error($e);
}
我的数据库中的数据:
+----------------+------------+----------+--------+
| reservation_id | date | start_at | end_at |
+----------------+------------+----------+--------+
| 6 | 2020-01-22 | 12:30 | 12:45 |
| 7 | 2020-01-20 | 12:50 | 13:00 |
| 8 | 2020-01-22 | 15:45 | 16:00 |
| 9 | 2020-01-21 | 14:45 | 15:00 |
+----------------+------------+----------+--------+
我目前的输出:
array (size=1)
'Wed' =>
array (size=4)
'id' => string '6' (length=1)
'date' => string '2020-01-22' (length=10)
'start_at' => string '12:30:00' (length=8)
'end_at' => string '12:45:00' (length=8)
/var/source/app/classes/System/Handlers/CalendarHandler.php:87:
array (size=2)
'Wed' =>
array (size=4)
'id' => string '6' (length=1)
'date' => string '2020-01-22' (length=10)
'start_at' => string '12:30:00' (length=8)
'end_at' => string '12:45:00' (length=8)
'Mon' =>
array (size=4)
'id' => string '7' (length=1)
'date' => string '2020-01-20' (length=10)
'start_at' => string '12:50:00' (length=8)
'end_at' => string '13:00:00' (length=8)
/var/source/app/classes/System/Handlers/CalendarHandler.php:87:
array (size=2)
'Wed' =>
array (size=4)
'id' => string '8' (length=1)
'date' => string '2020-01-22' (length=10)
'start_at' => string '15:45:00' (length=8)
'end_at' => string '16:00:00' (length=8)
'Mon' =>
array (size=4)
'id' => string '7' (length=1)
'date' => string '2020-01-20' (length=10)
'start_at' => string '12:50:00' (length=8)
'end_at' => string '13:00:00' (length=8)
/var/source/app/classes/System/Handlers/CalendarHandler.php:87:
array (size=3)
'Wed' =>
array (size=4)
'id' => string '8' (length=1)
'date' => string '2020-01-22' (length=10)
'start_at' => string '15:45:00' (length=8)
'end_at' => string '16:00:00' (length=8)
'Mon' =>
array (size=4)
'id' => string '7' (length=1)
'date' => string '2020-01-20' (length=10)
'start_at' => string '12:50:00' (length=8)
'end_at' => string '13:00:00' (length=8)
'Tue' =>
array (size=4)
'id' => string '9' (length=1)
'date' => string '2020-01-21' (length=10)
'start_at' => string '14:45:00' (length=8)
'end_at' => string '15:00:00' (length=8)
我希望每个日期都与他们的日子一起出现在数组中。连同其数据库信息。
例如:
'Wed' =>
array (size=4)
0 =>
'id' => string '6' (length=1)
'date' => string '2020-01-22' (length=10)
'start_at' => string '12:30:00' (length=8)
'end_at' => string '16:45:00' (length=8)
1 =>
'id' => string '8' (length=1)
'date' => string '2020-01-22' (length=10)
'start_at' => string '15:45:00' (length=8)
'end_at' => string '16:00:00' (length=8)
【问题讨论】:
-
不确定这是否正确,您的代码难以破译。看起来你有很多可能会混淆事物的道具。试试:$this->insertAvailabilityInDays[$this->dayLabel][] = $availableData
-
@TomShaw 我正要回复说我已经尝试过了,但它确实有效。我不知道为什么它现在这样做了。对不起,如果我解释得不好,究竟有什么困难我可以改变它?
-
除非绝对必要,否则我倾向于避免使用属性并使用函数参数。我已经和一位同事就这个问题发生了争执,当然你可以创建大量的道具,但更多的是为了简化事情和提高可读性。
-
当然,我的意思是我们都应该这样做。我是一名学生,还在学习很多东西。你能告诉我你会避免或改变什么,以便我下次应用。
-
我的建议是保持简单,代码格式和变量名都经过深思熟虑。原因是代码库变得越来越复杂。我有一个客户,现在 10 年后你应该会看到他的代码库。除此之外,我非常高兴它的工作! :)
标签: database oop for-loop foreach php-7.2