我创建了一个脚本来从 mysql 表中获取每年的数据,并放入相应年份的数组中。我检查了sql,while循环迭代正在工作。
<?php
mysql_select_db($database_hari,$hari);
$start=2013 ;
$end=2015;
$xdata=array();
for($year=$start;$year<=$end;$year++){
${"y".$year}=array();
$i=0;
$query=mysql_query("SELECT tld_master.location,tld_dose.year, AVG(tld_dose.dose)*4 as avgdose from tld_master left join tld_dose on tld_master.tldno=tld_dose.tldno where tld_master.site='F' and tld_dose.year=$year GROUP BY tld_dose.year, tld_dose.tldno");
while($result=mysql_fetch_array($query)){
$xdata[$i]=$result['location'];
${"y".$year."[".$i."]"}=$result['avgdose'];
$i++;
}
}
print_r($y2015);
?>
打印显示"数组()"但是,如果我在循环中回显每个数组值,它会打印。错误在哪里?
虽然有一些方法可以用变量解决你的问题,但我建议你采取不同的方法。如果年份是您意想不到的值怎么办?它很容易导致混乱。相反,您可以使用一个数组,您可以在不知道年份的确切值的情况下循环访问该数组。
$yearArray = array();
for($year=$start;$year<=$end;$year++){
$sql = "SELECT
tld_master.location,tld_dose.year, AVG(tld_dose.dose)*4 as avgdose
FROM tld_master
LEFT JOIN tld_dose on tld_master.tldno=tld_dose.tldno
WHERE tld_master.site='F' and tld_dose.year={$year}
GROUP BY tld_dose.year, tld_dose.tldno";
$query = mysql_query($sql);
$yearArray[$year] = array();
while($result=mysql_fetch_array($query)){
$xdata[] = $result['location'];
$yearArray[$year][] = $result['avgdose'];
}
}
现在,您可以打印$yearArray
变量以查看实际结果。而且您可以轻松使用它。
print_r($yearArray["2015"]);
${"y".$year} = array()
创建一个名为 $y2015
的变量,保存一个数组。 代码
${"y".$year."[".$i."]"} = ...
创建一个命名奇怪的变量$y2015[0]
,它与变量$y2015
完全无关。 你想要:
${"y".$year}[$i] = ...
你用这个语句覆盖你的数组值${"y".$year."[".$i."]"}=$result['avgdose'];
尝试使用这个: ${"y".$year."[".$i."]"}[]=$result['avgdose'];