我正在尝试将字符串分解为数组,然后在屏幕上打印值。这是我想要破解的字符串:
“齿轨|神鹰”
“|”用它来拆分它。我是这样做的:
<?= $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 :(得分: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
。