If Abfrage mit mehren ODER vereinfachen?
Weber
- php
0 cross0 Shadowcrow0 cross
0 Tobias Hahner0 Kai345
0 Kai3450 Don P0 Bademeister0 Don P
Hallo,
ich möchte gerne eine IF Abfrage vereinfachen
bisher:
if ($sonne == "12" or $sonne == "45" or $sonne == "126" ...
gibt es da nicht eine einfachere Lösung für
if ($sonne == "12,45,126...."
oder so ähnlich?
Hallöchen auch,
if ($sonne == "12" or $sonne == "45" or $sonne == "126" ...
gibt es da nicht eine einfachere Lösung für
Die einzige Vereinfachung, die ich kenne, wäre:
if ($sonne == "12" || $sonne == "45" || $sonne == "126" ...
MfG
cross
'ǝɯɐu$ ıɥ
if ($sonne == "12" or $sonne == "45" or $sonne == "126" ...
gibt es da nicht eine einfachere Lösung für
Die einzige Vereinfachung, die ich kenne, wäre:
if ($sonne == "12" || $sonne == "45" || $sonne == "126" ...
OR != ||
ssnɹƃ
ʍopɐɥs
Hallöchen auch,
OR != ||
Ja, aber lediglich in der Rangfolge.
MfG
cross
Hallihallo!
Ich würde schreiben:
$erwartet = array(12,45,126);
if (in_array($sonne, $erwartet)) {
// ...
}
Es ginge auch kürzer mit
if (in_array($sonne,array(12,45,126))) {
// ...
}
~~~,
aber die erste Variante ist meiner Meinung nach besser lesbar.
Beste Grüsse,
Tobias Hahner
[latex]Mae govannen![/latex]
Ich würde schreiben:
$erwartet = array(12,45,126);
if (in_array($sonne, $erwartet)) {
// ...
}
Ack. Wenn er auch wirklich 12, und nicht "12" möchte, dann wie in meinem Beispiel true als dritten Parameter.
>
> Es ginge auch kürzer mit
[..]
> aber die erste Variante ist meiner Meinung nach besser lesbar.
Insbesondere, was die Les-/Wartbarkeit angeht, ja.
Cü,
Kai
--
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken in Richtung "Mess up the Web". ([suit](https://forum.selfhtml.org/?t=197497&m=1324775))
[Foren-Stylesheet](http://selfhtml.knrs.de/#h_stylesheet) [Site](http://knrs.de/) [Selfzeug](http://selfhtml.knrs.de/) [JS-Lookup](http://js.knrs.de/lookup/)
SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
[latex]Mae govannen![/latex]
if ($sonne == "12" or $sonne == "45" or $sonne == "126" ...
gibt es da nicht eine einfachere Lösung für
if ($sonne == "12,45,126...."
> oder so ähnlich?
Da kann man sich ein paar Sachen zusammenspinnen ...
Du könntest z.B. die Vorgabe-Werte in ein Array packen und per in\_array() abfragen
~~~php
$werte = array(12, 45, 126);
if (in_array($sonne, $werte, true)) {
lösche_system_partition(); # *gg*
}
Cü,
Kai
Hallo,
if ($sonne == "12" or $sonne == "45" or $sonne == "126" ...
gibt es da nicht eine einfachere Lösung für
if ($sonne == "12,45,126...."
> oder so ähnlich?
In diesem konkreten Fall mit deinen Werten müsste auch
`if (strpos("12"."45"."126", $sonne)) ...`{:.language-php}
gehen. Wenn $sonne aber irgend einen Substring aus "1245126" enthalten kann, dann nicht.
Gruß, Don P
Hi.
if (strpos("12"."45"."126", $sonne)) ...
Hier muss Du etwas vorsichtig sein. Das liefert nur (annaehernd) das gewollte, wenn $sonne wirklich ein String ist. Wenn $sonne ein Integer ist (was ich vermute), dann verhaelt sich strpos anders als oben der Operator == (auch wenn dann natuerlich oben bereits ein Vergleich mit Zahlen statt Strings anzuraten waere).
Wenn $sonne aber irgend einen Substring aus "1245126" enthalten kann, dann nicht.
Das kommt erschwerend hinzu. Das Konzept von Pruefungen von Werten ist nicht, dass man *anninmmt*, dass keine unerwuenschten Werte auftreten, sondern dass man dieses - genau - prueft ;-)
Viele Gruesse,
der Bademeister
Hallo,
if (strpos("12"."45"."126", $sonne)) ...
Hier muss Du etwas vorsichtig sein. Das liefert nur (annaehernd) das gewollte, wenn $sonne wirklich ein String ist. Wenn $sonne ein Integer ist (was ich vermute), dann verhaelt sich strpos anders als oben der Operator ==
Bist du sicher? Hatte nämlich extra bei strpos nachgelesen, und dort steht "mixed" beim zweiten Parameter. Könnte natürlich sein, dass es sich dann trotzdem anders verhält. Um das zu beurteilen kenne ich PHP zu wenig und habe mich auch extra vorsichtig ausgedrückt. Wie anders verhält sich denn dann strpos? Kann es mir gerade gar nicht vorstellen (außer vielleicht mit negativen Integer).
Da fällt mir noch eine Vereinfachung ein:
if (strpos("45126", $sonne)) ...
Es gelten natürlich die gleichen Einschränkungen. Selber würde ich nicht so coden, zumal die Vereinfachung – wenn überhaupt vorhanden – ziemlich marginal ist.
Das Konzept von Pruefungen von Werten ist nicht, dass man *anninmmt*, dass keine unerwuenschten Werte auftreten, sondern dass man dieses - genau - prueft ;-)
Ein if() muss man ja nicht zwingend als strenge "Prüfung" auffassen. Oft mus man nichts annehmen oder überprüfen, sondern man weiß ganz genau, welche Werte überhaupt nur vorkommen können und mach dann lediglich eine Unterscheidung. ;)
Gruß, Don P
Bist du sicher? Hatte nämlich extra bei strpos nachgelesen, und dort steht "mixed" beim zweiten Parameter.
Ja. Eine Zahl ist da ja auch durchaus erlaubt.
Wie anders verhält sich denn dann strpos?
Hättste nur ein bissi weiterlesen müssen:
"Ist needle kein String, wird der Parameter in einen Integerwert konvertiert, der dem Ordinalwert des Zeichens entspricht."
D.h. auf deutsch, dass etwa strpos("Test", 115) == 2
, denn 115 ist die (ASCII|UNICODE)-Position des kleinen "s".
Viele Grüße,
der Bademeister