我完全不明白为什么这个PHP代码没有保存数组中的数据。当我在while循环期间回显数组时,值已设置但在退出循环后,数组中的值将丢失。其他变量在离开数组后确实包含了它们的值。
<?php
class VIEWARRAY {
public $year;
public $month;
public $day = array();
public $views = array();
}
$viewdatabase = array();
$connection = MySQL_Connection($host, Session_Get("username"), Session_Get("password"), $database);
$dayviewindex = 0; $monthyearindex = 0; $previousmonth = "";
$information = MySQL_Script($connection, "SELECT * FROM viewdatabase");
while ($index = mysqli_fetch_array($information)) {
if ($index["month"] != $previousmonth) {
$viewdatabase[$monthyearindex] = new VIEWARRAY;
$viewdatabase[$monthyearindex]->year = $index["year"];
$viewdatabase[$monthyearindex]->month = $index["month"];
$dayviewindex = 0;
$monthyearindex++;
$previousmonth = $index["month"];
}
$viewdatabase[$monthyearindex]->day[$dayviewindex] = $index["day"];
$viewdatabase[$monthyearindex]->views[$dayviewindex] = $index["views"];
$dayviewindex++;
}
MySQL_Disconnect($connection);
//testing area
echo "->" . $viewdatabase[0]->year . " + " . $viewdatabase[0]->month . "<br />"; //prints out ->2013 + 8
echo "------>" . $viewdatabase[0]->day[2] . " + " . $viewdatabase[0]->views[2] . "<br />"; //prints out ------> +
echo count($viewdatabase[0]->views) . "<br />"; //prints out 0
echo count($viewdatabase[1]->views) . "<br />"; //prints out 0
?>
我确保我能够很好地连接到我的数据库并且我的数据库确实返回了信息。这就是我的数据库设置方式
year month day views
2013 8 25 1
2013 8 26 1
2013 8 27 1
2013 9 3 1
答案 0 :(得分:0)
首次运行时,在if ($index["month"] != $previousmonth)
之后,$monthyearindex
将为1。
这意味着您接下来将尝试访问$viewdatabase[1]
但它是NULL。
在下一次迭代中,您不会输入if
,$monthyearindex
将为1,$viewdatabase[1]
仍为NULL。
因此,您实际上永远不会在day
和views
中设置任何内容。
答案 1 :(得分:0)
使用
if ($index["month"] !== $previousmonth) {
而不是
if ($index["month"] != $previousmonth) {
,因为
0 == ''
,但是
0 !== ''
。因为,
$index['month'] != ''
是
false
,你的if语句失败。