提问人:maximiliansport 提问时间:6/30/2022 最后编辑:Dharmanmaximiliansport 更新时间:6/30/2022 访问量:262
为什么我只得到带有 foreach 循环的数组的最后一个条目 [closed]
Why I get only the last entrie of array with foreach loop [closed]
问:
我想将带有键“weekday, date”的 Databaseentrise 保存在带有数组的数组中。 (想法是我可以在工作日的 xxx 数组中保存 xx 个客人。并输出工作日xxx或周一至周日的客人列表。
之后,我想输出数组。 数组应该是两个条目,但在输出中它只显示最后一个条目。 我错了什么?
我的MySQL数据库是这样的: 客人:
同上 | 名字 | 姓氏 | 开始日期 | 日期 |
---|---|---|---|---|
1 | 奥托 | 测试 | 2022-06-30 | 2022-06-30 |
2 | 安娜 | 测试w | 2022-06-30 | 2022-06-30 |
3 | 彼得 | Testma的 | 2022-06-27 | 2022-06-29 |
<?php
//DB: Connection
$mysqli = new mysqli("localhost", "root", "", "Belegung");
//Errorhandling
if ($mysqli -> connect_errno)
{
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
//Prepare Array
$calendar = array ();
//DB: SQL:
$sql = "SELECT * FROM `guests` WHERE `begindate` = '2022-06-30'";
$result = $mysqli->query($sql) or die( $result->error);
//Fillign Array Key: *Monday, YYYY-MM-DD* - *Sunday, YYYY-MM-DD* and as Array name of guests
while ($row = $result->fetch_object())
{
$calendar['2022-06-30'] = array ($row->firstname . " " . $row->lastname);
//With print_r($row->firstname) I get here two names, so it should work but:
}
//Output
$tag ='2022-06-30';
echo "<ul>";
foreach ($calendar[$tag] as $ausgabecal)
{
echo "<li>" . $ausgabecal . "</li>" ."<br/>";
//Here I got only the last one "Anna
}
echo "</ul>";
$result -> free_result();
$mysqli -> close();
?>
答:
0赞
Ali SSN
6/30/2022
#1
你应该在你的循环中使用它
while ($row = $result->fetch_object())
{
$calendar['2022-06-30'][] = array ($row->firstname . " " . $row->lastname);
}
评论
0赞
maximiliansport
6/30/2022
好!谢谢你,非常mutch!是的,现在我也看到了我对大脑:-D的失误现在,该段落的外观和工作方式与之前的输出代码类似:while ($row = $result->fetch_object()) { $calendar['2022-06-30'][] = $row->firstname . " " . $row->lastname; }
0赞
Ali SSN
6/30/2022
这很好,但最好使用动态日期键: $calendar[$row->begindate][] = array ($row->firstname ." " .$row->姓氏);}
评论
$calendar['2022-06-30'] = ...
$calendar['2022-06-30'][] = ...
array ($row->firstname . " " . $row->lastname);
$row->firstname . " " . $row->lastname;
die(mysqli_error($$conn));