簡體   English   中英

如何在 while 循環中使用多個 list()/each() 調用?

[英]How do I use multiple list()/each() calls in a while loop?

我正在使用 3 個不同的 arrays (盡管我暫時只測試兩個)並且我正在嘗試處理$_POST上的 arrays 。 我目前正在使用:

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() ,它將打印該特定項目的信息。 但是,如果我嘗試同時使用多個list()命令,則只有最后一個list() ed 項目被正確填充。 list()是否在后台做了一些詭計,阻止它在 while 循環中工作?

顯然,“簡單”的解決方案是使用索引並簡單地強制解決問題,但我更喜歡枚舉——老實說,我只是好奇

我做錯了什么,和/或list()什么“壞了”?

漏洞? 不知道。 這是一種解決方法。

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>";
}

您可以使用 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;
   }
}

&&以短路方式求值,第一個返回 false 的語句會跳出它。 在您的情況下,一旦第一個數組結束,它就會停止迭代。 list在這里應該可以正常工作,因為它是一種分配變量的語言結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM