2017-08-25 91 views
3

我想把一个字符串分解成一个数组,然后在屏幕上打印这些数值。下面是我试图打破字符串:Laravel 5.4数组到字符串转换异常

“齿轨|神鹰”

“|”用它来分割它。这里是我正在做它:

<?= $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- 

我无法弄清楚什么是错在这里。

+0

这就是我一直在告诉自己几个小时.. 。 –

+0

Blade被设计用于根除正常php标签的使用,所以我不明白它的答案用法。为什么不尝试使用'@ php'和'@ endphp'分别代替'' – mbozwood

+2

@mbozwood我认为**理解为什么**事情首先发生会更好。然后,您可以使用更好,更简单的解决方案。 – ishegg

回答

2

而其他的答案是不正确不,刀片的设计消除了使用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 [email protected]标签,并且只使用@foreach() ... @endforeach

1

您必须用此<?php代替<?=

3

您正在使用PHP短标签<?=,相当于<?php echo。因此,它试图echo阵列,你不能。像这样做:

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

你不能把多条语句在<?= ... ?>块 - 这是速记的回声,所以如果要执行的操作,以及你的代码扩展到

<?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;} ?>