Durchlaufen array mit Schlüssel Laravel
Ich habe eine E-Commerce-Website, In meinem controller habe ich einen code, der steuert, eine Liste von Ländern angezeigt werden, in den Warenkorb.
Wenn der Preis des Landes, wo wir sind, ist größer als oder gleich der Preis für den Versand in andere Länder, diese Länder sind zu der Liste Hinzugefügt:
Dies ist mein controller-code:
$params['final_countries_list'] = [];
$list_countries = Config::get('app.web_config.shipment.countries');
$base_price = $list_countries[Config::get('app.web_country')]['price'];
foreach($list_countries as $key=>$value) {
if ($value['price'] <= $base_price)
$params['final_countries_list'][$key] = $value;
}
Gut, wenn ich einen dd($params['final_countries_list']), bekomme ich dieses Ergebnis.
array(13) {
["deu"] array(2) {
["name"] "Deutschland"
["price"] 9
}
["che"] array(2) {
["name"] "Schweiz"
["price"] 9
}
["fra"] array(2) {
["name"] "France"
["price"] 8
}
["gbr"] array(2) {
["name"] "United Kingdom"
["price"] 9
}
ETC,ETC...
Nun möchte ich, um diese(deu, fra, gbr, etc) im Blick cart.blade.php
In der cart.blade.php haben Sie diesen code, um zu bekommen, was ich will:
<select name="country" id="pais">
<option value="" selected><--- Choose Country ---></option>
<?php foreach($final_countries_list as $key => $value){?>
<option value="<?php echo $key?>"><?php echo $value. ' ('.$key.')';?></option>
<?php } ?>
</select>
Und ich bekomme die folgende Fehlermeldung:
ErrorException (E_UNKNOWN)
Arrays zu-string-Konvertierung (Ansicht: C:\xampp\htdocs\my_web_name\app\views\cart.blade.php)
Wie ich es beheben kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist, dass Sie die Iteration über ein array von arrays, aber der sub-array, das Sie behandeln, als ob es ein string ist (warum bist du immer der Fehler). Wenn ich Sie richtig verstehe, eine einfache änderung können Sie bekommen, was Sie wollen:
'price'
Schlüssel an anderer Stelle in Ihrem Blick. Wenn nicht, ist seine Lösung besser sein könnte.price
aus meiner Sicht, ich Tue alles, was in den controllerDer einfachste Weg würde einfach sein, weisen Sie nicht den vollen Wert aber nur die
name
: (Wenn Sie nicht brauchen, ist der Preis in der Ansicht)Einem ein bisschen schöner (meiner Meinung nach)
Sollten Sie verwenden
$country['name']
P. S.
Wenn Sie mit Klinge können Sie den code vereinfachen, indem Sie mithilfe von blade-Helfer Kurzwahlnummern
(z.B.
@foreach
).Mit diesem im Verstand, den Sie schreiben Ihren code einfacher
HTML: