我已经在stackoverflow上查找了答案,但没有人正确解释。
我有一个有效的循环:
info = array();
while($get_info= mysql_fetch_array($info_result)){
$info['team_id'] = $get_info['team_id'];
$info['team_points'] = $get_info['team_points'];
}
当我打印出阵列时:
数组([team_id] => 26 [team_points] => 100)
但是我的foreach返回了一个无效的论点。
foreach ($info as $info_mation ){
echo $info_mation['team_id'];
echo $info_mation['team_points'];
echo "<br/>";
}
我尝试了很多不同的方法但没有任何作用。
谢谢!
答案 0 :(得分:2)
问题在于从数据库中获取数据。像这样修改你的while
循环:
info = array();
while($get_info = mysql_fetch_array($info_result)){
$temp_info = array();
$temp_info['team_id'] = $get_info['team_id'];
$temp_info['team_points'] = $get_info['team_points'];
$info[] = $temp_info;
}
现在您的foreach
循环应该正常运行。
答案 1 :(得分:0)
如果您到目前为止看到的内容没有意义,可以再解释一下。当你这样做时:
$info = array();
while($get_info = mysql_fetch_array($info_result)) {
$info['team_id'] = $get_info['team_id'];
$info['team_points'] = $get_info['team_points'];
}
您在while循环的每次迭代中覆盖$info
。因此,在循环结束时,$info
将只包含查询结果的最后一行。
这解释了您看到的结果:
数组([team_id] =&gt; 26 [team_points] =&gt; 100)
所以当你用
迭代这个数组时foreach ($info as $info_mation ){
echo $info_mation['team_id'];
echo $info_mation['team_points'];
echo "<br/>";
}
$info_mation
将包含26,然后是100,这对foreach
确实无效。
您需要创建一个多维数组而不是一维数组。你可以通过稍微修改while
循环来实现这一点:
while($get_info= mysql_fetch_array($info_result)) {
$info[] = $get_info;
}
这样做会在每次迭代时向$info
数组添加一个新的数组元素,而不是重复覆盖相同的两个元素。
答案 2 :(得分:0)
这是你的代码:
info = array();
while($get_info= mysql_fetch_array($info_result)){
$info['team_id'] = $get_info['team_id'];
$info['team_points'] = $get_info['team_points'];
}
将其更改为:
$info = array();
while($get_info= mysql_fetch_array($info_result)){
$info[] = array(
'team_id' => $get_info['team_id'],
'team_points' => $get_info['team_points']
);
}
所以,你的$ info变量包含你所做的sql结果中的所有数组。
foreach($info as $inf) {
echo $inf['team_id'];
echo $inf['team_points'];
echo '<br>';
}
我们已经完成了! :)