php foreach循环没有按所需顺序放置array_merge的值

时间:2016-02-19 14:58:28

标签: php

如果我填写以下表格:

<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

我该怎么做才能获得第一个输出?

3 个答案:

答案 0 :(得分:1)

如果每个阵列上的长度始终相同。你可以尝试这样的事情。

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

答案 1 :(得分:0)

你可以这样做:

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

请注意,您可以将$_POST['extra-count'][$key]替换为$value,但我认为通过这种方式更容易理解。

此外,我不认为你理解array_merge是如何工作的。你应该看看here

答案 2 :(得分:0)

您可能正在寻找array_combine

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