我想将json数据放入带有laravel blade的html表单输入复选框。
我有多个输入复选框值为test[]
,
然后我尝试使用htmlspecialchars
将值打印到输入中。
如果我的前端检查此输入,后端使用print_r就像这样
Array
(
[0] => {"value1":"tool_ad_id","value2":"\u65e5\u4ed8"}
[1] => {"value1":"ad_group1","value2":"\u30c4\u30fc\u30eb\u5e83\u544aID"}
)
但我使用return $request->test['0']['value1'];
无法获取值。
我想获得'value1'和'value2'。
PHP Laravel
@foreach($as as $key => $value)
<div class="col s6 m4 l3 blue-grey lighten-5">
<?php
$data = ['value1' => $value['en'] ,'value2' => $value['jp'] ];
$data_total = htmlspecialchars(json_encode($data));
?>
<input type="checkbox" id="test5{{ $key }}" value="{{$data_total}}" name="test[]" />
<label for="test5{{ $key }}">{{$value['jp']}}</label>
</div>
@endforeach
Laravel控制器
return $request->test['0']['value1'];
错误消息
Illegal string offset 'value1'
答案 0 :(得分:2)
[0] => {"value1":"tool_ad_id","value2":"\u65e5\u4ed8"}
Index => String
PHP 不解析JSON,您正在接收JSON作为普通字符串。因此,为了将其转换为具有属性correspongind到键的PHP对象,您需要使用json_decode()
。
尝试$test = json_decode($request->test['0'], true)
,然后访问$test
变量中的值。
$value1 = $test['value1'];
$value2 = $test['value2'];