尝试在数组中打印值时出现非法字符串偏移

时间:2018-07-17 08:55:53

标签: php laravel laravel-5

我正在邮件模板中呈现视图,但是在我看来,使用dd($row['product_name']);时出现以下错误。我得到了产品名称,但是在以下代码中却不知道该错误的含义:

@foreach ($order as $row)
    <tr>
        <td>{{ $row['product_name'] }}</td>
        <td>{{ $row['amount'] }}</td>
        <td>{{ $row['quantity'] }}</td>

    </tr>
@endforeach

获取错误:

  

非法的字符串偏移量'product_name'

8 个答案:

答案 0 :(得分:2)

$ order是对象$row->product_name,而不是数组$row['product_name']

@foreach ($order as $row)
    <tr>
        <td>{{ $row->product_name }}</td>
        <td>{{ $row->amount }}</td>
        <td>{{ $row->quantity }}</td>
    </tr>
@endforeach

答案 1 :(得分:1)

这可能是因为数组元素中不存在“ product_name”键。在使用它之前,请使用isset

检查该数组元素中是否存在键
@foreach ($order as $row)
        <tr>
            <td>{{ isset($row['product_name'])?$row['product_name']:'' }}</td>

        </tr> @endforeach

答案 2 :(得分:1)

尝试这个:

@foreach ($order as $row)
        <tr>
            <td>{{ $row->product_name }}</td>
            <td>{{ $row->amount }}</td>
            <td>{{ $row->quantity }}</td>

        </tr>
@endforeach

查看刀片https://laravel.com/docs/5.6/blade的laravel文档

答案 3 :(得分:1)

您可以尝试此解决方案吗

@foreach ($order as $row)
        <tr>
            <td>{{ $row->product_name }}</td>
            <td>{{ $row->amount }}</td>
            <td>{{ $row->quantity }}</td>

        </tr>
@endforeach

答案 4 :(得分:1)

添加 dd($ row)的dd($ row ['product_name'])。

答案 5 :(得分:1)

您的控制器返回的对象不是数组,所以您尝试这样做

@foreach ($order as $row)
    <tr>
        <td>{{ $row->product_name }}</td>
        <td>{{ $row->amount }}</td>
        <td>{{ $row->quantity }}</td>
    </tr>
@endforeach

答案 6 :(得分:1)

$ order是一个对象,您不能像数组一样使用它

@foreach ($order as $row)
    <tr>
        <td>{{ $row->product_name }}</td>
        <td>{{ $row->amount }}</td>
        <td>{{ $row->quantity }}</td>
    </tr>
@endforeach

如果要使用这样的记录,则需要转换对象toArray()

$order =  $order->toArray();

之后,您可以像这样使用:$row['product_name']

答案 7 :(得分:1)

这里$ order是一个对象,因此不能像$ row ['product_name']这样使用。可以使用->运算符使用对象的属性。所以尝试这样

t = setTimeout(add, 1);