You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JS向隐藏输入框传入数组,使PHP端接收为多维数组?

问题:如何让PHP接收的$_POST数组呈现期望的数组结构?

现有代码

HTML表单

<form id="su" action="su.php" method="POST" onsubmit="sendQuestions(event)">
    <input type='hidden' name="questions[]" id="questions"/>
    <button type="submit">Generate Quiz</button>
</form>

JavaScript提交逻辑

function sendQuestions(e){
    e.preventDefault()

    let form = document.getElementById('su')
    let ques = document.getElementById('questions')

    var x = [5,10]
    ques.value = x;
    form.submit();

}

当前PHP接收结果

Array
(
    [questions] => Array
        (
            [0] => 5,10
        )

)

期望的PHP接收结构

Array
(
    [questions] => Array
        (
            [0] => 5
            [1] => 10
        )

)

解决方案

方法1:动态创建多个隐藏输入框(推荐)

修改JavaScript逻辑,循环数组元素,为每个元素创建一个name="questions[]"的隐藏输入框,PHP会自动将它们解析为数组的独立元素:

function sendQuestions(e){
    e.preventDefault()
    let form = document.getElementById('su')
    // 移除原有单个隐藏输入框
    document.getElementById('questions').remove()

    var x = [5,10]
    // 循环生成对应输入框
    x.forEach(item => {
        let input = document.createElement('input')
        input.type = 'hidden'
        input.name = 'questions[]'
        input.value = item
        form.appendChild(input)
    })

    form.submit()
}

方法2:PHP端拆分字符串(仅适用于元素无逗号的场景)

如果不想修改前端代码,可在PHP接收后按逗号拆分字符串,但元素含逗号时会出错,不推荐:

if(isset($_POST['questions'][0])){
    $_POST['questions'] = explode(',', $_POST['questions'][0]);
}

print_r($_POST);

方法3:JSON格式传递

前端将数组转为JSON字符串,PHP端解析为数组:

前端修改
function sendQuestions(e){
    e.preventDefault()
    let form = document.getElementById('su')
    let ques = document.getElementById('questions')

    var x = [5,10]
    ques.value = JSON.stringify(x);
    form.submit();
}
PHP端处理
if(isset($_POST['questions'][0])){
    $_POST['questions'] = json_decode($_POST['questions'][0], true);
}

print_r($_POST);

内容的提问来源于stack exchange,提问作者DCR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:26:09