繁体   English   中英

PHP数组,从中获取多维数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM