2017-08-25 4 views
3

Ich versuche, eine Zeichenfolge in ein Array zu brechen und dann die Werte auf dem Bildschirm drucken. Hier ist die Zeichenfolge, die ich zu brechen bin versucht:Laravel 5.4 Array zu String-Konvertierung Ausnahme

"Cog | Condor"

"|" Verwenden Sie dies, um es zu teilen. Hier ist, wie ich es tue:

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

Aber ich bekomme immer wieder diese Ausnahme:

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- 

ich kann nicht herausfinden, was hier nicht stimmt.

+0

Das ist, was ich habe mich erzählt, stundenlang .. –

+0

Blade wurde entwickelt, um die Verwendung für normale PHP-Tags zu beseitigen, so dass ich die Antworten nicht verstehe. Warum nicht versuchen, '@ php' und' @ endphp' anstelle der '' bzw. – mbozwood

+2

@mbozwood zu verwenden. Ich denke, es ist besser zu verstehen **, warum ** Dinge zuerst passieren.Dann können Sie die besseren und leichteren Lösungen nutzen. – ishegg

Antwort

2

Während die anderen Antworten nicht falsch sind, haben Klingen die Verwendung von PHP-Tags zur Beseitigung entwickelt. Mit den Blade-Funktionen können Sie alles machen.

Der Fehler, der hier erzeugt wird, ist, dass <?= eine Abkürzung für <php echo ist. So wird Ihr Code in Pseudo-Code-Begriffen als echo $arrays gerendert, wo das PHP bricht, weil Sie ein Array nicht widerhallen können.

Um Ihren Code in diesem Fall zu verbessern, sollten Sie so viele Daten wie möglich in der Steuerung bearbeiten, die in der Blade-Dokumentation auch here genannt wird.

Könnte ich vorschlagen, Ihren Code zu ändern, um das gleiche Ergebnis zu erzielen, aber mit Blade.

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

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

Das obige Snippet wird die gleichen Ergebnisse wie gewünscht produzieren.

Ein noch besserer Weg, dies zu tun und Ihr Verständnis zu vertiefen wäre, die Ansicht vom Controller zurück zu geben und $arrays vordefiniert zu übergeben. Etwas wie folgt aus:

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

Die oben können Sie den Code-Schnipsel 2 bis verwenden, aber ohne die @php [email protected] Tags und verwenden nur die @foreach() ... @endforeach

1

Sie müssen <?= durch diese <?php ersetzen.

3

Sie verwenden das PHP-Kürzel <?=, das <?php echo entspricht. So versucht es echo das Array, was Sie nicht können. Machen Sie es wie folgt aus:

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

Sie nicht mehrere Anweisungen in <?= ... ?> Blöcke setzen können - es ist kurz Hand für Echo, so dass Ihr Code erweitert zu

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

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

Wenn Sie möchten, als auch Operationen durchzuführen als Ausgabe, müssen Sie nur volle PHP-Tags verwenden:

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