2010-05-21 66 views
0

我有任何陣列PHP更改陣列遍地

$num_list = array(42=>'0',44=>'0',46=>'0',48=>'0',50=>'0',52=>'0',54=>'0',56=>'0',58=>'0',60=>'0'); 

,我想,我經過一個循環

while(list($pq, $oin) = mysql_fetch_row($result2)) { 
     $num_list[$oin] = $pq; 
    } 

所以我想改變像58到403,而改變的特定值然後0.

但是,我總是最終得到最後的變化和非先前的變化。所以它總是最終被類似 0,0,0,0,0,0,0,0,0,403 而不是 14,19,0,24,603,249,0,0,0,403

我怎樣才能這樣做,所以它不會覆蓋它?

謝謝

+1

'$ pq'和'$ oin'可以有什麼值? – 2010-05-21 08:05:43

+0

對不起,讓我再解釋一下。 $ oin必須是數組中的值(42,44,46,48,50,etcetc) $ pq可以是任何整數。 – Steven 2010-05-21 08:07:56

+0

那麼,你希望只用大於「0」的值或者一次只選擇一個值來覆蓋它? – Thariama 2010-05-21 08:22:08

回答

1

那麼,你明確地編碼,每個條目應該用數據庫中的值替換(即使用「0」)。 你可以只非零值替換值:

while(list($pq, $oin) = mysql_fetch_row($result2)) { 
    if ($pq !== "0") $num_list[$oin] = $pq; 
} 
1

我沒有讓你更清楚,我以爲你只問這個。檢查

while(list($pq, $oin) = mysql_fetch_row($result2)) { 
     if($oin==58) { 
      $num_list[$oin] = $pq; 
     } 
    } 
1

在我的模擬試題(雖然你很稀缺,信息),您的代碼運作良好,併產生你想要的結果。檢查你放入數組的第二個查詢參數 - 即$ pg,這就是你應該得到的值0,0,0,0,0 ... 403或者其他的事情可能是你的$ oin數字不存在於$ num_list鍵。 雖然我用mysqli驅動測試過你的代碼,但是資源提取fetch_row是一樣的。請記住一件事 - 如果您的查詢記錄數大於$ numlist數組,並且$ oin數不唯一,您的$ numlist可能很容易被以下數據覆蓋,$ numlist也可能會獲得很多更多額外的不需要的元素。

總是試圖提供您的問題的更廣泛的背景下,可以有很多方法來解決這個問題,幫助早日到達。