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

时间:2017-08-25 14:07:44

标签: php string laravel

我正在尝试将字符串分解为数组,然后在屏幕上打印值。这是我想要破解的字符串:

“齿轨|神鹰”

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

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

但我一直得到这个例外:

    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-

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

4 个答案:

答案 0 :(得分:4)

您无法在<?= ... ?>块中添加多个语句 - 它是echo的简称,因此您的代码会扩展为

<?php
  echo $arrays = explode('|', $b->brand); // This is what's causing your error

  foreach($arrays as $array){echo $array;}
?>

如果要执行操作和输出,只需使用完整的PHP标记:

<?php $arrays = explode('|', $b->brand); foreach($arrays as $array){echo $array;}  ?> 

答案 1 :(得分:3)

您正在使用等同于<?=的PHP短标记<?php echo。因此,它试图echo数组,你不能这样做。这样做:

<?php $arrays = explode('|', $b->brand); foreach($arrays as $array){echo $array;}  ?> 

答案 2 :(得分:3)

虽然其他答案并不正确,但Blade已被设计为根除PHP标签的使用。刀片功能允许您执行所有操作。

此处产生的错误是<?=<php echo的简写。因此,您的代码将以伪代码术语呈现为echo $arrays,这是因为您无法回显数组而导致PHP崩溃的地方。

为了更好地处理此实例中的代码,您应该在控制器中操作尽可能多的数据,这在刀片文档中也会提到here

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

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

@foreach($arrays as $array)
    {{ $array }}
@endforeach

上述代码段会产生与预期相同的结果。

更好的方法是做到这一点,并进一步理解将从控制器返回视图,并传递$arrays预定义。像这样:

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

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

答案 3 :(得分:1)

您必须使用此<?=替换<?php