php如何循环现有值并将它们组合在一起?

时间:2016-02-19 13:16:18

标签: php

我有以下代码:

<form action="" method="post">
    <input type="text" name="text[0]">
    <a id="AddMore">Add more fields</a>
    <input type="submit" value="submit"> 
</form>

#AddMore添加数字迭代的输入元素(使用jQuery)。所以当你点击它时:

<form action="" method="post">
    <input type="text" name="text[0]">
    <input type="text" name="text[1]">
    <a id="AddMore">Add more fields</a>
    <input type="submit" value="submit"> 
</form>

提交时,我想获取现有输入的值并将其添加到我的$ message字符串中。我想到了这样的事情:

$message = "Text number: 1 contains: " . $_POST['text[0]'] . "\r\n" // . $extraInput; ???
for ($x = 1; $x < 20; $x++) { // 20 = max number of inputs
    if(isset($_POST['text[$x]']) && $_POST['text[$x]'] != ''){
        $extraInput-$x .= "Text number: " . $x + 1 " contains: " . $_POST['text[$x]'] . "\r\n"; // how to add this to $message?
    } else {
        $extraInput-$x .= "";
    }

我知道我的php不正确,但无论如何我把它放在这里,所以你会更好地理解我的意图。使用它的正确方法是我想知道/学习的。

例如,当我点击“添加更多字段&#39;两次。我希望php将以下字符串放入$ message:

$message = "Text number: 1 contains: " . $_POST['text[0]'] . "\r\n" . "Text number: 2 contains: " . $_POST['text[1]'] . "\r\n" . "Text number: 3 contains: " . $_POST['text[2]'] . "\r\n";

这是我最终想要使用的邮件:

mail($to,$subject,$message);

2 个答案:

答案 0 :(得分:1)

这是一种方法:

if(0 < sizeof($_POST['text']))
{
    $message = '<ol>';
    foreach($_POST['text'] as $text)
    {
        if(false === empty($text))
            $message .= "<li>".$text."</li>";
    }
    $message = '</ol>';
}else{
    $message = "void";
}

答案 1 :(得分:1)

如果您的<input type="text">的{​​{1}}属性为nametext[0]等,则在您的php代码中,它们的值不在text[1]中,而是在$_POST[text[n]]中。 $_POST[text][n]

因此,您可以通过以下方式获得所需的输出:

$message = '';
foreach( $_POST['text'] as $key => $val )
{
    $message .= "Text number: ".($key+1)." contains: {$val}\r\n";
}

或者 - 如果你想跳过空值 - 就这样:

$message = '';
$index   = 1;
foreach( $_POST['text'] as $val )
{
    if( $val )
    {
        $message .= "Text number: ".($index++)." contains: {$val}\r\n";
    }
}

编辑:请注意,如果设置,则无需检查$_POST[text][n],因为数组的所有元素都已设置,如果它们为空。

相关问题