2017-08-25 26 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 echoと同等のPHPショートタグ<?=を使用しています。したがって、それは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;} ?> 
関連する問題