如何解决此错误“ htmlspecialchars()期望参数1为字符串,给定数组(View:\ frontend \ passenger.blade.php)”

时间:2019-03-29 05:25:23

标签: php laravel

在这里,我正在尝试预订我的座位,我选择了一个座位,然后尝试在下一页值字段中显示该座位号,但出现此错误。如果我插入默认值,它正在工作。另外,如果将默认值设置为正常,我将无法将这些数据插入数据库。

passenger.blade.php:

@foreach($seat_data as $key => $no)
    <div class="col-md-12">&nbsp;</div>
    <div class="rows">
        <div class="col-md-3"><strong>Seat No :{{$no['name']}} </strong></div>
        <input type="hidden" name="seat[{{$key}}]" class="form-control" id="validationDefault02" placeholder="Seat No" value="{{$no['name']}}">

        <div class="col-md-3 mb-3">
            {{--<label for="validationDefault01">Name</label>--}}
            <input type="text" name="name[{{$key}}]" class="form-control" id="validationDefault01" placeholder="First name">
        </div>

PassengersController:

public function collectInformation(Request $request)
{
    $buses_id = $request->buses_id;
    $schedules_id = $request->schedules_id;
    $seat_no = $request->seat_id;
    $data = Buses::where('buses_id', $buses_id)->first();
    $seat = json_decode($data->seat_layout, true);
    $count = count($seat_no);
    for ($i = 0; $i < $count; $i++) {
        $first = array_shift($seat_no);
        $name = empty($seat[$first]['name']) ? $seat[$first]['name'] : $seat_no;
        $seat_data[$i] = [
            'name' => $name,
            'id' => $seat_no,
        ];
    }

我这样更改了我的代码,它可以正常工作。那是对的吗?但问题是我可以再次预订同一座位。问题出在我更改的代码中?

$seat_data[$i] = [ 
    'name' => $seat[$first]['name'], 
    'id' => $seat[$first]['id'], ];

3 个答案:

答案 0 :(得分:1)

我将空更改为!empty现在可以正常工作

focus

答案 1 :(得分:0)

这意味着$ no ['name']或$ key是数组而不是字符串。请同时检查它们。

您应该使用序列化方法将数组转换为字符串,或者创建自己的数组。

答案 2 :(得分:0)

问题出在那一行

$name = empty($seat[$first]['name']) ? $seat[$first]['name'] : $seat_no;

我们在这里看到的

 $first = array_shift($seat_no);

$seat_no是一个数组,所以$name可能是字符串$seat[$first]['name']或数组$seat_no,当它是一个数组时,会出现错误:“ htmlspecialchars()期望参数1为字符串。”

我认为您应该考虑并解决此问题

$name = empty($seat[$first]['name']) ? $seat[$first]['name'] : $seat_no;

这有点奇怪,您检查$seat[$first]['name']是否为空,然后将其(空值)分配给$name

为帮助我们修复您的代码,请添加$data->seat_layout$request->seat_id