gpt4 book ai didi

php - while-list 给出奇怪的值

转载 作者:行者123 更新时间:2023-11-29 00:52:32 24 4
gpt4 key购买 nike

我从表单中获取下一篇文章的变量:

$_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)=@each($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 字段。

在此先感谢您的帮助!

最佳答案

我个人不喜欢while (list() = each()) 结构。它看起来凌乱且令人困惑,99.9% 的时间 foreach 将同样有效地完成相同的工作,如果不是更高效的话。

改变

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

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

...看看您是否还有同样的问题。如果你这样做,那么问题出在其他地方,我可能会有更多关于你正在努力实现的目标的问题。

关于php - while-list 给出奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7760242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com