[英]PHP arrays, getting multi-dimensional data from for reach
我一直在寻找stackoverflow的答案,但是没有人正确地解释它。
我有一个while循环有效:
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/>";
}
我尝试了许多不同的方法,但是没有任何效果。
谢谢!
问题在于从数据库中获取数据。 像这样修改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
循环应该可以正常工作了。
如果到目前为止您所看到的没有任何意义,这里还有更多解释。 执行此操作时:
$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] => 26 [team_points] => 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
数组中添加一个新的数组元素,而不是重复覆盖相同的两个元素。
这是您的代码:
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>';
}
我们完成了! :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.