我正在使用3个不同的阵列(虽然我暂时只测试了两个)并且我正在尝试处理$_POST
上的数组。我目前正在使用:
while(list($key_member,$member)=each($_POST['member_ids'])
&& list($key_amount,$amount)=each($_POST['payment_amounts']))
{
echo "MEMBER: $member<br>";
echo "AMOUNT: $amount<br><br>";
}
如果我在任一阵列上使用一个list()
,它将打印该特定项目的信息。但是,如果我尝试在while中使用多个list()
命令,则只会正确填充最后一个list()
ed项。 list()
是否在背景中做了一些阻止它在while循环中工作的技巧?
显然,“简单”解决方案是使用索引并简单地强制解决问题,但我更喜欢枚举 - 而且老实说我只是好奇
我做错了什么,和/或用list()
“破坏”了什么?
答案 0 :(得分:2)
错误?不知道。 这是一个解决方法。
while(list($key_member,$member)=each($_POST['member_ids'])){
list($key_amount,$amount)=each($_POST['payment_amounts']);
echo "MEMBER: $member<br>";
echo "AMOUNT: $amount<br><br>";
}
答案 1 :(得分:1)
您可以使用array_keys()提取每个数组的键,这会产生一个索引数组,然后为每个数组保留单独的循环计数器:
$member_ids = array_keys($_POST['member_ids']);
$amounts = array_keys($_POST['payment_amounts']);
$mi = 0;
$am = 0;
while(1) {
...
$mi++
$am++;
if (count($member_ids) >= $mi) && (count(amounts) >= $am) {
break;
}
}
答案 2 :(得分:0)
&&
以短路方式进行评估,第一个返回false跳转的语句。在你的情况下,它会在第一个数组结束时停止迭代。 list
在这里应该可以正常工作,因为它是一个分配变量的语言结构。