我创建了一个脚本,每年从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);
?>
打印显示“Array()” 但是如果我在for循环中回显每个数组值,它就会打印出来。错误在哪里?
答案 0 :(得分:1)
虽然有很多方法可以用变量来解决你的问题,但我建议你采用不同的方法。如果年份是您不期望的价值怎么办?它很容易导致混乱。相反,您可以使用可以在不知道年份的确切值的情况下迭代的数组。
$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"]);
答案 1 :(得分:0)
您使用此语句覆盖数组值${"y".$year."[".$i."]"}=$result['avgdose'];
请尝试使用此语句:${"y".$year."[".$i."]"}[]=$result['avgdose'];
答案 2 :(得分:0)
${"y".$year} = array()
创建一个名为$y2015
的变量,保存一个数组。代码
${"y".$year."[".$i."]"} = ...
创建一个奇怪命名的变量$y2015[0]
,它与变量$y2015
完全无关。你想要:
${"y".$year}[$i] = ...