Laravel 5.4 数组到字符串转换异常

Muh*_*haq 4 php string laravel

我试图将一个字符串分解成一个数组,然后在屏幕上打印这些值。这是我试图打破的字符串:

“齿轮|秃鹰”

“|” 使用它来拆分它。这是我的做法:

<?= $arrays = explode('|', $b->brand); foreach($arrays as $array){echo $array;}  ?> 
Run Code Online (Sandbox Code Playgroud)

但我不断收到此异常:

    2/2) ErrorException
Array to string conversion (View: D:\Code\PHP\Code\CrownBillingSystem\resources\views\pages\print.blade.php)
in 6e7ee4930110d4a26a3e31e0ddfe8b87849a1319.php (line 93)
at CompilerEngine->handleViewException(object(ErrorException), 1)
in PhpEngine.php (line 44)
at PhpEngine-
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这里出了什么问题。

mbo*_*ood 5

虽然其他答案没有错,但 Blade 旨在消除 PHP 标签的使用。Blade 功能让您无所不能。

这里所产生的误差存在是<?=对速记<php echo。因此,您的代码将以echo $arrays伪代码术语呈现,这是 PHP 中断的地方,因为您无法回显数组。

为了在这种情况下改进您的代码,您应该在控制器中操作尽可能多的数据,刀片文档中也提到这一点。

我是否建议修改您的代码以产生相同的结果,但使用刀片。

@php 
    $arrays = explode('|', $b->brand); 
@endphp

@foreach($arrays as $array)
    {{ $array }}
@endforeach
Run Code Online (Sandbox Code Playgroud)

上面的代码片段将产生与预期相同的结果。

一个更好的方法是从控制器返回视图,并传递$arrays预定义的视图。像这样的东西:

public function echoArrays()
{
    $b = Object::find(1); //or however you get $b
    $arrays = explode('|', $b->brand); 
    return view('view1', compact('arrays');
}
Run Code Online (Sandbox Code Playgroud)

以上将允许您使用代码片段 2,但没有@php ...@endphp标签,只需使用@foreach() ... @endforeach