2016-02-19 74 views
1

如果我填寫此表格如下所示:PHP foreach循環不把array_merge的值在所需的順序

<input type=number name=extra-count[0]> <!--value submitted: 4 --> 
<input type=text name=extra-product[0]> <!--value submitted: product A --> 
<input type=number name=extra-count[1]> <!--value submitted: 5 --> 
<input type=text name=extra-product[1]> <!--value submitted: product B --> 

比我有這樣的代碼:

foreach(array_merge($_POST['extra-count'],$_POST['extra-product']) as $text) { 
    if(false === empty($text)){ 
     $message .= "\r\n".$text; 
    } 
} 

要輸出這樣的:

4 poduct A 
5 product B 

但它會輸出這個:

4 
5 
product A 
product B 

我能做些什麼來獲得第一個輸出?

回答

1

如果你在每個陣列上總是相同的長度。你可以試試這樣的事情。

foreach($_POST['extra-count'] as $key => $text) { 
    if(false === empty($text)){ 
     $message .= "\r\n".$text . " " . $_POST['extra-product'][$key]; 
    } 
+0

這一個完美的工作! – remkovdm

0

,你可以這樣做:

foreach($_POST['extra-count'] as $key => $value) { 
      if(false === empty($text)){ 
       $message .= "\r\n$_POST['extra-count'][$key] $_POST['extra_product'][$key]"; 
      } 
     } 

注意,您可以用$value取代$_POST['extra-count'][$key],但我認爲這將是比較容易理解的方式。

此外,我不認爲你瞭解array_merge是如何工作的。你應該檢查出來here

0

你可能會尋找array_combine

foreach(array_combine($_POST['extra-count'],$_POST['extra-product']) as $key => $text) { 
    if(false === empty($text)){ 
     $message .= "\r\n".$key.' '.$text; 
    } 
}