foreach mit bedingung?!
jens65m
- php
hab mal eine frage:
wie kann ich das nichtfunktionierende Codebeispiel
foreach($arr != "xy" as $part)
echo $part;
in etwas funktioniertendes wandeln ohne dabei if zu verwenden. gibs da ne möglichkeit?
lg, jens
Hi,
wie kann ich das nichtfunktionierende Codebeispiel [...]
in etwas funktioniertendes wandeln ohne dabei if zu verwenden. gibs da ne möglichkeit?
Du wurdest hier in letzter Zeit schon mehrfach aufgefordert, dass du doch bitte verbal beschreiben sollst, was du *erreichen* willst - anstatt immer wieder nur irgendwelchen Mistcode kombiniert mit der Frage „wie geht das richtig?“ zu posten.
Kannst du bitte mal erklären, was verdammt noch mal daran du nicht in deinen Schädel kriegst?
MfG ChrisB
Wenn if nunmal das Mittel der Wahl ist, warum dann ohne?
foreach($arr as $part){
if($part != "xy"){
echo $part;
}
}
Hello,
hab mal eine frage:
Und wie hoch ist der Hauptgewinn bei diesem Grübelspiel?
wie kann ich das nichtfunktionierende Codebeispiel
foreach($arr as $part)
{
echo ($part != "xy")?$part:'';
}
> in etwas funktioniertendes wandeln ohne dabei if zu verwenden. gibs da ne möglichkeit?
Na saga schon, was habe ich jetzt gewonnen?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg

--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Moin!
echo ($part != "xy")?$part:'';
Na saga schon, was habe ich jetzt gewonnen?
Ich finde wir sollten abstimmen ob das als implizites if gilt und damit aus der Wertung faellt.
Hallo,
echo ($part != "xy")?$part:'';
Na saga schon, was habe ich jetzt gewonnen?
Ich finde wir sollten abstimmen ob das als implizites if gilt und damit aus der Wertung faellt.
der Auswahloperator (ternärer Operator, Fragezeichen-Operator) hat mit dem if-Statement nichts zu tun. Es ist zwar unter gewissen Voraussetzungen möglich, die beiden Dinge ineinander zu überführen (hier liegt so ein Fall vor), aber sie sind für ganz unterschiedliche Aufgaben gedacht.
So long,
Martin
Grüße,
der Auswahloperator (ternärer Operator, Fragezeichen-Operator) hat mit dem if-Statement nichts zu tun. Es ist zwar unter gewissen Voraussetzungen möglich, die beiden Dinge ineinander zu überführen (hier liegt so ein Fall vor), aber sie sind für ganz unterschiedliche Aufgaben gedacht.
ich habe den bisher nur als ersatz für if gehandhabt - was kann es noch?
MFG
bleicher
Hallo,
der Auswahloperator (ternärer Operator, Fragezeichen-Operator) hat mit dem if-Statement nichts zu tun. Es ist zwar unter gewissen Voraussetzungen möglich, die beiden Dinge ineinander zu überführen (hier liegt so ein Fall vor), aber sie sind für ganz unterschiedliche Aufgaben gedacht.
ich habe den bisher nur als ersatz für if gehandhabt - was kann es noch?
vielleicht wird's klar, wenn man die Eigenschaften mal gegenüberstellt:
if ?:
-----------------------------------------------------------
wertet boolschen Ausdruck aus ja ja
führt abhängig vom boolschen Resultat ja nein
einen Anweisungsblock aus
berechnet abhängig vom boolschen Resultat nein ja
entweder Ausdruck A oder Ausdruck B
Liefert ein Ergebnis nein ja
Kann als Teilausdruck eingesetzt werden nein ja
Damit sieht man deutlich: Der Fragezeichen-Operator ist vor allem dazu da, innerhalb eines *Ausdrucks* eingesetzt zu werden, weil er wie jeder andere Operator ein *Ergebnis* liefert.
Dafür kann er nicht, wie die if-Anweisung, ganze Anweisungsblöcke abhängig von der formulierten Bedingung ausführen.
Der Fragezeichen-Operator kann in eine plumpe if-Konstruktion überführt werden, wenn er nicht in einen weiteren Ausdruck verschachtelt auftritt. Plump deshalb, weil dann im if- und im else-Zweig zwei Anweisungen entstehen, die sich nur in einem einzigen Teilausdruck unterscheiden.
Umgekehrt kann genau dann eine if-else-Konstruktion in einen Ausdruck mit dem ternären Operator umgeschlüsselt werden, wenn sich die Anweisungen im if- und im else-Zweig nur in einem einzigen Teilausdruck unterscheiden.
So long,
Martin
führt abhängig vom boolschen Resultat ja nein
einen Anweisungsblock ausberechnet abhängig vom boolschen Resultat nein ja
entweder Ausdruck A oder Ausdruck B
Bei den Beiden würde ich mich nicht festlegen :) Wenn man "Anweisungsblock" nicht notwendigerweise als { } umschlossenes Konstrukt bezeichnet und "berechnet" nicht notwendigerweise den folgenden Anweisungsblock ausnimmt sind sie austauschbar.
z.B. das hier
if(true) {
$var = 1;
} else {
$var = 2;
}
$var = (true ? 1 : 2);
Hallo,
führt abhängig vom boolschen Resultat ja nein
einen Anweisungsblock ausberechnet abhängig vom boolschen Resultat nein ja
entweder Ausdruck A oder Ausdruck BBei den Beiden würde ich mich nicht festlegen :)
aber nur, weil du die formale Bedeutung nicht erkennst oder nicht scharf zwischen Anweisung (statement) und Ausdruck (expression) unterscheidest.
Eine Anweisung kann ein Ausdruck (Funktionsaufruf, Zuweisung) oder eine Kontrollstruktur (if, while, switch, ...) sein.
Ein Ausdruck dagegen ist eine den Syntaxregeln entsprechende Verkettung von Operanden (Konstanten oder Variablen), Operatoren und Funktionsaufrufen, die nach der Auswertung ein Ergebnis liefert.
Das hätte ich in der Gegenüberstellung auch noch erwähnen können: Ein Ausdruck kann (unabhängig vom ternären Operator) keine Kontrollstrukturen enthalten, der Anweisungsblock eines if-Statements schon.
Wenn man "Anweisungsblock" nicht notwendigerweise als { } umschlossenes Konstrukt bezeichnet
Aber genau das *ist* ein Anweisungsblock: Mehrere Anweisungen, die mit geschweiften Klammern zu einem Block gruppiert sind, so dass dieser Block in einigen Kontexten wieder wie eine einzelne Anweisung behandelt werden kann.
und "berechnet" nicht notwendigerweise den folgenden Anweisungsblock ausnimmt
Der Begriff "berechnet" ist nicht optimal gewählt; "auswerten" (evaluate) wäre besser und üblicher. Viel wichtiger als das Berechnen war in diesem Satz aber der Begriff "Ausdruck".
if(true) {
$var = 1;
} else {
$var = 2;
}$var = (true ? 1 : 2);
Das ist der Fall, den ich gemeint habe: Die Anweisungen im if- und im else-Zweig unterscheiden sich in genau einem Teilausdruck. Dann kann dieser Teilausdruck ideal mit dem Fragezeichen-Operator substituiert werden.
So long,
Martin
--
Ein Patriot ist jemand, der bereit ist, sein Land gegen seine Regierung zu verteidigen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Hoi,
foreach($arr != "xy" as $part)
echo $part;
>
> in etwas funktioniertendes wandeln ohne dabei if zu verwenden. gibs da ne möglichkeit?
???
If-Phobie?
--
Vergesst Chuck Norris.
Sponge Bob kann unter Wasser grillen!
hab mal eine frage:
Hallo erstmal, ich weiß nicht ob sie's wussten ...
wie kann ich das nichtfunktionierende Codebeispiel
foreach($arr != "xy" as $part)
echo $part;
>
> in etwas funktioniertendes wandeln ohne dabei if zu verwenden. gibs da ne möglichkeit?
Verwende switch/case :p