【问题标题】:How to json_decode using foreach loop?如何使用 foreach 循环进行 json_decode?
【发布时间】:2019-09-21 11:23:49
【问题描述】:

我正在尝试使用 foreach 循环解析表单提交的隐藏输入文本。

<input type="hidden" id="snippet_tags" name="snippet_tags[]" value="["88","92","96","98"]">

使用以下函数获取此信息

$snippet_tags = json_decode($_POST['snippet_tags'], true);

并使用 foreach 循环解析值

foreach ($snippet_tags as $selectedOption){

                        $ins_snippet_tag_data = array(
                            'snippet_id' => $insertDataReturnLastId,
                            'tag_id' => $selectedOption,
                            'priority' => 1,

                        );

                 $this->Constant_model->insertDataReturnLastId('snippets_tags', $ins_snippet_tag_data);

                }

这里的问题是 tag_id 的值没有保存在数据库中

【问题讨论】:

    标签: javascript php jquery json


    【解决方案1】:

    您不能使用相同的引号来分隔值和其中的字符串。您需要在值周围使用单引号。

    <input type="hidden" id="snippet_tags" name="snippet_tags[]" value='["88","92","96","98"]'>
    

    你写它的方式,它被视为你写了value="[",其余的被忽略。

    另外,由于名称后面有[]$_POST['snippet_tags'] 将是一个数组,所以你需要循环它。

    foreach ($_POST['snippet_tags'] as $json) {
        $snippet_tags = json_decode($json, true);
        foreach ($snippet_tags as $selectedOption){
            $ins_snippet_tag_data = array(
                'snippet_id' => $insertDataReturnLastId,
                'tag_id' => $selectedOption,
                'priority' => 1,
            );
            $this->Constant_model->insertDataReturnLastId('snippets_tags', $ins_snippet_tag_data);
        }
    }
    

    【讨论】:

    • 我像这样保存这些 - $('#sn-p_tags').val(JSON.stringify(sn-ptags));
    • 这些输入是否不止一个?通常,当您有多个相同类型的输入时,您会使用数组样式的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多