我在HTML表单中有数组输入,如下所示
<select name="age[]" id="ageFrom">..Age Options..</select>
<select name="age[]" id="ageTo">..Age Options..</select>
提交后,我将数据保存在mysql数据库中,作为 json_encoded 值,如["20","25"]
foreach($request->request as $key => $value) {
ProfileSettings::create([
'uid' => $curMID,
'code' => 'preference',
'key' => $key,
'value' => json_encode($value),
'serialized' => 1
]);
});
现在,当它从DB获取此值并尝试将其解码为
时$val = json_decode(["20", "25"]) OR json_decode(["20", "25"], true)
我的数据库返回的值如
然后我收到类似
的错误htmlspecialchars()期望参数1为字符串,给定数组为
请帮助我以$val[0]
和$val[1]
答案 0 :(得分:0)
事实是,你在php数组json_decode
上调用[ ]
。
它需要一个字符串,它将转换为数组。
也许您想要使用json_encode
代替?如果是这样,请将您的代码更改为:
$val = json_encode(["20", "25"]) OR json_encode(["20", "25"], true)
答案 1 :(得分:0)
问题是来自数据库的值是@Bean
public Step messagesDigestMailingStep(EntityManagerFactory entityManagerFactory) {
return stepBuilderFactory
.get("messagesDigestMailingStep")
.<UserAccount, UserAccount>chunk(5)
...
.writer(itemWriter)
.listener((StepExecutionListener) mailSkipListener) // <--- 1
.listener((SkipListener) mailSkipListener) // <--- 2
.build();
}
,并且在{{1}}函数中插入的值被解释为数组。
要解决此问题,请在双引号之间插入值。
{{1}}