PHP更改阵列遍地

问题描述:

我有任何阵列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

那么,你明确地编码,每个条目应该用数据库中的值替换(即使用“0”)。 你可以只非零值替换值:

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

我没有让你更清楚,我以为你只问这个。检查

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

在我的模拟试题(虽然你很稀缺,信息),您的代码运作良好,并产生你想要的结果。检查你放入数组的第二个查询参数 - 即$ pg,这就是你应该得到的值0,0,0,0,0 ... 403或者其他的事情可能是你的$ oin数字不存在于$ num_list键。 虽然我用mysqli驱动测试过你的代码,但是资源提取fetch_row是一样的。请记住一件事 - 如果您的查询记录数大于$ numlist数组,并且$ oin数不唯一,您的$ numlist可能很容易被以下数据覆盖,$ numlist也可能会获得很多更多额外的不需要的元素。

总是试图提供您的问题的更广泛的背景下,可以有很多方法来解决这个问题,帮助早日到达。