2017-08-25 88 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;} ?>