PHP在while循环中添加到数组

时间:2013-02-07 14:59:26

标签: php arrays

我在while循环期间添加到数组时遇到了一些问题,并且想知道是否有人可以帮助我。首先是一些背景知识。我正在循环一些sql结果并尝试收集结果,同时按各种ID进行分组,以便以后更容易处理。它似乎只是一行代码不起作用。

下面有一些代码
while($row=mysql_fetch_assoc($res)){
if(!array_key_exists($row['foreign_key_value'],$contacts)){
    $contacts[$row['foreign_key_value']]=array();
}
if(!array_key_exists($row['uid'],$contacts['foreign_key_value'])){
    $contacts[$row['foreign_key_value']][$row['uid']]=array();
}
$contacts[$row['foreign_key_value']][$row['uid']][$row['rating_id']]=$row['rating_value'];  

}

这是我遇到问题的最后一行,我在这里添加了rating_id和rating_value。我循环的数据是4个字段 - foreign_key_value,uid,rating_id和rating_value。我最终想要的结构看起来像

array(1) {
  [73]=>
  array(2) {
    [9]=>
    array(1) {
      [4]=>
      string(1) "3"
    }
  [1762]=>
    array(1) {
      [1]=>
      string(1) "5"
    }
  }

我只是无法获得rating_id和rating_value来在最后一个数组中创建多个键值对,我期待5对。我唯一得到的是最后一对选中。我真的不知道为什么我没有得到我需要的数据,有人可以帮忙吗?

abc667 - 你的位置。非常感谢你。我一直盯着它看,我错过了这一点,现在我开始觉得自己像个白痴

1 个答案:

答案 0 :(得分:1)

你需要在while()循环之前声明$ contacts数组 - 所以你可以在之后使用它

$contacts = array();
while($row=mysql_fetch_assoc($res)){
if(!array_key_exists($row['foreign_key_value'],$contacts)){
    $contacts[$row['foreign_key_value']]=array();
}
if(!array_key_exists($row['uid'],$contacts['foreign_key_value'])){
    $contacts[$row['foreign_key_value']][$row['uid']]=array();
}
$contacts[$row['foreign_key_value']][$row['uid']][$row['rating_id']]=$row['rating_value'];  

}