我正在尝试使用 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 的值没有保存在数据库中
最佳答案
不能使用相同的引号来分隔值及其内部的字符串。您需要在值周围使用单引号。
<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);
}
}
关于javascript - 如何使用 foreach 循环进行 json_decode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58039790/