将JavaScript数组传递给PHP数组[重复]

Posted

技术标签:

【中文标题】将JavaScript数组传递给PHP数组[重复]【英文标题】:Pass JavaScript array to PHP array [duplicate] 【发布时间】:2021-02-28 19:08:41 【问题描述】:

我是新手。我想在 php 中创建文本文件,因为我需要 Clint 端的两个数组。问题是我已将数组从 javascript 传递给 PHP,但在 PHP 中它确实转换为单个 JavaScript 数组字符串。

test.html

<form method="post" id="theform" action="example.php">
    <!-- your existing form fields -->

    <input type="hidden" id="markers" name="markers">

    <button>Submit</button>
</form>

<script>
    window.onload = function () 
        var form = document.getElementById('theform');
        form.addEventListener('submit', function () 
            var markersField = document.getElementById('markers');
            var markers = [1, 2, 3];
            markersField.value = JSON.stringify(markers);
        );
    
</script>

example.php

<?php 
    $array=json_decode($_POST['markers']);
    foreach($array as $value)
        print $value;
    
?>

example.php 的输出

123

预期输出

$array[0] = 1;
$array[1] = 2;
$array[2] = 3;

【问题讨论】:

这样说吧:如果你有$array = [1, 2, 3];,你会从foreach循环中得到完全相同的输出(它只打印值) 【参考方案1】:

您的代码的预期输出确实是 123,因为您实际上并没有打印数组 $array,而是打印了数组的单个值。要显示数组,您需要使用 print_r()var_dump() 并在浏览器中查看源代码或使用 html (&lt;pre&gt;&lt;?php print_r($array);?&gt;&lt;/pre&gt;) 以获得更漂亮打印。

此外,要确保json_decode() 不会创建对象而是数组,请确保启用参数$assoc。解决办法是:

PHP 8

<?php 
$array = json_decode($_POST['markers'], assoc: true);

print('<pre>');
print_r($array);
print('</pre>');

PHP 7 或更低

<?php 
$array = json_decode($_POST['markers'], true);

print('<pre>');
print_r($array);
print('</pre>');

【讨论】:

以上是关于将JavaScript数组传递给PHP数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将php数组传递给sql查询[重复]

将php数组传递给sql查询[重复]

将 PHP 数组传递给 JS - PHP Laravel 5.8 [重复]

将参数从php中的数组传递给构造函数[重复]

将 Javascript 数组转换为 PHP 数组或将其传递给 PHP 文件

将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP