2013-02-07 139 views
0

我在while循環中添加數組時遇到了一些麻煩,並且想知道是否有人可以幫助我。首先,一些背景。我正在循環查看一些sql結果,並嘗試收集結果,同時通過各種id進行分組,以便稍後處理。它似乎是一行代碼不起作用。有一些代碼如下PHP在while循環中添加到數組中

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 - 你是真的。非常感謝你。我在它的眼前這麼久,我錯過了,我開始覺得自己像個白癡現在

+0

在你的第一個代碼段中,'$ contacts ['foreign_key_value']'是否應該是'$ contacts [$ row ['foreign_key_value']]'? – Passerby

+1

在'if $!array_key_exists($ row ['uid'],$ contacts ['foreign_key_value']))''中將'$ contacts ['foreign_key_value']'更改爲'$ contacts [$ row ['foreign_key_value']]'''' – abc667

+0

abc667 - 你真的很棒。非常感謝你。我一直在盯着它,這麼久,我錯過了,我現在開始覺得自己像個白癡 –

回答

1

您需要聲明$觸點陣列之前的while()循環 - 讓你以後可以使用它

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

} 
+0

$ contacts數組已經被聲明,我只是沒有包含在代碼中 –