如何通过HTML表单发送PHP数组(使用input标签)

f45qwnt8  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(117)

我想在输入表单元素中发送一个数组。
我的数组:

Array( [0] => 55 [1] => 1 [2] => 4 )

HTML <input> tag:

<input type="hidden" name="category" value="'.$category.'" />

这是我的代码产生的URL:

http://localhost/search?&category%5B%5D=55&category%5B%5D=1&category%5B%5D=4

但我也得到了这个PHP通知:
PHP注意:数组到字符串的转换
如何通过HTML表单正确发送数组?

我找到了这个解决方案:

foreach ($category as $item) {
    echo '<input type="hidden" name="categories[]" value="'.$item.'" />';                       
}

准备阵列$category。范例:

echo '<div align="center">  
    <form method="GET" action="/search" />                      
    <input type="hidden" name="search" value="'.$search.'" />'; 

    foreach ($category as $item){

    echo '<input type="hidden" name="categories[]" value="'.$item.'" />'; 

    } 

    echo '<input type="submit">        
    </form>
    </div>';

并获得:

if(isset($_GET['categories'])) {

$categories = $_GET['categories'];                    

}
vyu0f0g1

vyu0f0g11#

最简单的方法是将类别数组转换为JSON并返回。

echo '<input type="hidden" name="category" value="' . json_encode($category) . '" />';

.当你发送表单时,将JSON解析回数组:

$category = json_decode($_GET["category"]);
eufgjt7s

eufgjt7s2#

通过表单通过隐藏的html输入字段发送PHP预定义数组。这是怎么做的。

**1.**假设这是您要发布的数据

<?php
    // Dynamic array
    $items = array(0 =>
                        array(
                            'Name'         => 'Colored Pencil',
                            'Description'  => 'Test description',
                            'Quantity'     => 1,
                            'Price'        =>
                                array(
                                    'Amount' => 2, //value
                                    'Type'   => 'CUSTOM',
                                     )
                             )
                    );

    // Serialize the array to JSON
    $productData = json_encode($items );
?>

**2.**设置表单

// Form submit items plus other information
    <form action="items_data.php" method="POST">
        // Other Details...
        <input type="hidden" name="items_data" id="items_data">
        <input type="submit" value="Send">
    </form>

**3.**通过.js将value设置为隐藏标签

// Add the script
    <script>
        // Set the serialized data to the hidden input field
        document.getElementById('product_data').value = <?php echo json_encode($productData); ?>;
    </script>

**4.**接收数据

<?php
    // Recieve the data in 'items_data.php' file and Decode after submission
    $productArray = json_decode($_POST['product_data'], true);

    // print data
    echo("<pre>");
    print_r($productArray);
    echo("</pre>");
?>

相关问题