2011-10-13 55 views
1

我得到下一個POST變量從一種形式:同時列表給出了奇怪值

$_POST['segment'][2] 
$_POST['segment'][3] 
$_POST['segment'][4] 
$_POST['segment'][5] 

這是從一種形式複選框。

不要問我爲什麼,但發佈的數據轉換爲: $ IN [ 「段」]

我檢查他們:

if($IN['segment'][5]) 
    $podo_segment = 5; 
elseif($IN['segment'][4]) 
    $podo_segment = 4; 
elseif($IN['segment'][3]) 
    $podo_segment = 3; 
elseif($IN['segment'][2]) 
    $podo_segment = 2; 
else 
    $podo_segment = 'NULL'; 

PODO指腳:)

然後我插入(最高)值到MySQL中。 (較高的數值意味着較低的值也都會,這就是爲什麼使用僅有1場)

我要更新舊的值,但使用了面具,我真的不明白這是怎麼做到這樣不知道如何將其轉換/更新爲2,3,4或5的新值。

$segmask = 0; 
while (list($a,$b)[email protected]($IN["segment"])) 
    $segmask += pow(2,$a); 

我試過php.net,但是沒有任何意義。至少沒有什麼比$ segmask成爲2^$ a的值。 (什麼是$ a,$ b和$ b似乎沒有做什麼???) 但在mysql中產生的值例如:

5給出32,(看起來對我來說:2^5)

沒有其他的選擇,那麼2,3,4和/或5,給出了類似的值:

9977932 
16273612 
18366668 
24662092 
16448 
17846476 
18370636 
34619404 
270024716 
18370780 
9982092 
34623564 
9977980 
512 
16386 
1064964 
2 
37240844 
35143692 
1064972 
9977868 
16388 
2148548620 
269500428 
2148548668 
268976140 
1107836940 
11026444 
2149072908 
1589260 

最後我需要以價值爲基礎2,3,4或5更新一個新的MySQL場在這個老的領域。

在此先感謝您的幫助!

回答

1

我個人不喜歡while (list() = each())結構。它看起來很混亂和令人困惑,99.9%的時間會像高效率那樣完成同樣的工作,如果不是這樣的話。

變化

while (list($a,$b)[email protected]($IN["segment"])) 
    $segmask += pow(2,$a); 

foreach ($IN["segment"] as $key => $val) 
    $segmask += pow(2, $key); 

...,看看您是否仍然有同樣的問題。如果你這樣做,那麼問題就出在別的地方,我可能還會有更多關於你想要達到什麼的問題。

+0

我自己從來沒有使用while(list()= each())結構。我只是在調試別人的網站。問題是這段代碼是用來插入這些數據的,但搜索引擎並不總是給出正確的結果。爲了防止完全重寫該網站,我添加了新的字段,所以對於新成員它的作品,但我必須更新它現有的成員。我試圖找到2,3,4,5和舊(被蒙版)數字之間的相關性。但對於400名成員,我有101個不同的舊值:( – Terradon

+0

我不太明白麪具應該做什麼/代表...是否應該跟蹤選項的組合?所以選項2和4應該是20,選項2和3將是12,2只會是4等等等等?還是我完全在錯誤的軌道上? – DaveRandom

+0

看着數字,他們似乎都是從2的冪(例如,pow(2,14)+ pow(2,1)= 16386'和pow(2,20)+ pow(2, 14)+ pow(2,2)= 1064964'),但如何解釋/扭轉這個有意義的事我不知道... – DaveRandom

相關問題