来自3个文本框的用户输入将插入到PHP数组中

时间:2018-01-24 15:22:21

标签: php html arrays html5 forms

我有一个HTML表单,其中包含3个类型文本输入和一个类型为submit的输入,其中动物的名称将插入到每个文本框中。然后应将数据插入PHP数组中。

这是我的HTML表单:

<form action="Test.php" method="post" name="myForm" id="myForm">
    <input type="text" placeholder="Enter animal one..." name="animal1" id="animal1">
    <input type="text" placeholder="Enter animal two..." name="animal2" id="animal2">
    <input type="text" placeholder="Enter animal three..." name="animal3" id="animal3">
    <input type="submit" value="Submit" name="send" id="send">
</form>

这是我非常实验性的PHP代码:

<?php

if (isset ($_POST["send"])) {
    $farmAnimals = $_POST["animal1"];
    $farmAnimals = $_POST["animal2"];
    $farmAnimals = $_POST["animal3"];
}

// As a test, I tried to echo the saved data

echo $farmAnimals;

?>

这不起作用,因为不幸的是,数据并没有神奇地变成一个数组,我认为这样做。

我也试过这个:

<?php

if (isset ($_POST["send"])) {
    $farmAnimals = $_POST["animal1", "animal2", "animal3"];
}

    echo $farmAnimals;

?>

这给了我一条错误信息。如何将此数据插入PHP数组?

4 个答案:

答案 0 :(得分:-1)

首先将$ farmAnimals初始化为数组,然后可以推送元素     

if (isset ($_POST["send"])) {
    $farmAnimals = array();
    $farmAnimals[] = $_POST["animal1"];
    $farmAnimals[] = $_POST["animal2"];
    $farmAnimals[] = $_POST["animal3"];

    print_r($farmAnimals);
}

答案 1 :(得分:-1)

试试这个:

$string = ""; 
foreach($_POST as $value){ 
    $string .= $value . ","; 
} 

或者这个:

$string = implode(',', $_POST);  

答案 2 :(得分:-1)

如果您将文本字段名称更改为animal[],则在发布时会有一系列动物名称

<form action='Test.php' method='post'>
    <input type='text' placeholder='Enter animal one...' name='animal[]' />
    <input type='text' placeholder='Enter animal two...' name='animal[]' />
    <input type='text' placeholder='Enter animal three...' name='animal[]' />
    <input type='submit' value='Submit' name='send' id='send'>
</form>

然后,您可以轻松地在php中处理该数组,无论您的目的是什么 - 其输出将是这样的:

Array
(
    [animal] => Array
        (
            [0] => giraffe
            [1] => elephant
            [2] => rhinocerous
        )

    [send] => Submit
)

要以自己的方式将这些动物作为阵列进行访问,您可以这样做:

$animals=array_values( $_POST['animal'] );

答案 3 :(得分:-1)

尝试命名输入字段,如下所示:

<form action="Test.php" method="post" name="myForm" id="myForm">
    <input type="text" placeholder="Enter animal one..." name="animal[0]" id="animal1">
    <input type="text" placeholder="Enter animal two..." name="animal[1]" id="animal2">
    <input type="text" placeholder="Enter animal three..." name="animal[2]" id="animal3">
    <input type="submit" value="Submit" name="send" id="send">
</form>

这样您就可以在PHP代码中访问这些值,如下所示:

if(isset($_POST["send"])) {
    $farmAnimals = $_POST["animal"];
}

var_dump($farmAnimals);
// Array( [0] => Animal1, [1] => Animal2, [2] => Animal3 )
// Where Animal1,... are the values entered by the user.
// You can access them by $farmAnimals[x] where x is the desired index.

提示:您可以使用empty()检查变量是否存在以及是否具有“truthy”值(评估为true的值)。如果根本没有定义变量,它不会抛出异常。有关详细信息,请参阅PHP - empty()

关于超全球$_POST数组的更多参考,显示了这种“数组生成名称”方法:https://secure.php.net/manual/en/reserved.variables.post.php#87650

修改

我刚看到,您实际上每次都会覆盖$farmAnimals变量。您应该使用带有任意数量参数的array(val1, val2, ...)来生成数值数组。

如果您更喜欢关联数组,请执行以下操作:

$myArray = array(
    key1 => value1,
    key2 => value2,
    ....
);

要在下一个空闲索引的现有数组上附加值,请使用以下语法:

// This array contains numbers 1 to 3 in fields 0 to 2
$filledArray = array(1,2,3); 
$filledArray[] = "next item";
// Now the array looks like this:
// [0 => 1, 1 => 2, 2 => 3, 3 => "next item"]