0

我在 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 - 你在现场。非常感谢。我一直盯着它看太久了,我错过了,现在我开始觉得自己像个白痴

4

1 回答 1

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'];  

}
于 2013-02-07T15:02:18.040 回答