0

while ループ中に配列に追加する際に問題が発生しました。どなたか助けていただけないでしょうか。まず、いくつかの背景。いくつかのSQL結果をループして、後で処理しやすくするためにさまざまなIDでグループ化しながら結果を収集しようとしています。動作していないコードは 1 行だけのようです。以下にいくつかのコードがあります

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 を追加しています。ループしているデータは、foreign_key_value、uid、rating_id、rating_value の 4 つのフィールドです。最終的に作りたい構造は次のようになります

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 に答える