PHP Foreach , Wo
Gibt es eine Möglichkeit, das hinzufügen einer Klasse, wo eine foreach-Gleichung in PHP.
Im moment bin ich hinzufügen, wenn der foreach-wie diese.
<?php foreach($themes as $theme){
if($theme['section'] == 'headcontent'){
//Something
}
}?>
<?php foreach($themes as $theme){
if($theme['section'] == 'main content'){
//Something
}
}?>
Vermutlich die PHP Schleife durch alle Ergebnisse für jeden dieser. Da gibt es effizientere Wege dies zu tun. So etwas wie
foreach($themes as $theme where $theme['section'] == 'headcontent')
Kann das getan werden,
- Man könnte filter das array vor der foreach-Schleife, so dass erste filter für 'headcontent', dann die Schleife. Aber ich glaube nicht, dass du irgendetwas gewinnen mit, der.
- Sie laufen beide loops jedes mal? Wie viel code wir reden in diesen
if
-Aussagen? Und der Inhalt ist in beiden Fällen ähnlich oder ganz anders? - Ich verstehe nicht, was Sie sind gonna foreach, wenn Sie bereits einen bestimmten Wert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
SWITCH
- Anweisung.Einer "foreach" -wo" wäre genau das gleiche wie eine "foreach-wäre-wenn", weil sowieso PHP hat, um eine Schleife durch alle Elemente zu prüfen, die Bedingung.
Schreiben Sie es auf eine Linie zu reflektieren, die mit "wo" Geist:
Dieser wird wirklich das gleiche wie das Konstrukt deutet sich am Ende die Frage; kann man Lesen/verstehen, es auf die gleiche Weise.
Es jedoch nicht, die Adresse der Tatsache, dass in der Frage der spezifischen Szenario, unter Verwendung von "foreach-wo" der Bau würde in der Effekt-Schleife durch alle Elemente mehrmals. Die Antwort liegt in der Bündelung aller für die tests und die entsprechende Behandlung in einer einzigen Schleife.
Verwenden Sie besser
for loop
für dass wieforeach($themes as &$theme)
: Würde zumindest vermeiden, "kopieren", das array zu Speicher wieder, und sollte fast genauso schnell wie eine for-Schleife. Aber dein "Weg" sieht auch cool 😉 [und soweit ich weiß===
ist schneller als==
]Wenn jemand nutzt MVC-framework ,die Antwort auf die Frage "foreach-wo" ist hier
Denken Sie daran, gibt es keine Notwendigkeit für die
endforeach;
Anweisung nachendif;
Wenn jemand will, um mehr code schreiben zwischen
endif;
undendforeach;
dann die oben sollte sein: