If PHP
Anonym
- php
Und wieder nervt euch der PHP-Anfänger (Ich bin aber schon fleisig am lernen!)
Naja eine Frage zu if else.
Wenn ich if habe
also
``
}
(Nur als Beispiel)
wie ordne ich $x mehrere Werte bei if zu. Oder muss ich für jeden Wert ein If schreiben.
Ich meine sowas in der Art (Was nicht geht natürlich)
if ($x==3,4,5,6,7,8)
{
echo "Hallo";
}
Ich Rindvieh.
Mit or gings!
Nee, doch nicht wirklich
Doch es geht,
aber man muss ja immer die Bedingung erneut ausschreiben...
Naja was soll's
Erst denken, dann posten...
Bei vielen gültigen, die keiner anderen Regel entsprechen könnte auch funktionieren:
$valid = array(3,4,5,7,8,99);
if (in_array($x,$valid)){
echo "Hallo";
}
Cheers,
Baba
Hello,
Doch es geht,
aber man muss ja immer die Bedingung erneut ausschreiben...
Dann nimm doch switch ... case ... default
http://de3.php.net/manual/en/control-structures.switch.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
aber man muss ja immer die Bedingung erneut ausschreiben...
Dann nimm doch switch ... case ... default
http://de3.php.net/manual/en/control-structures.switch.php
Das sind wohl zwei verschiedene Dinge. Er will nicht auf verschiedene Werte von x verschieden reagieren, sondern auf verschiedene Werte von x gleich reagieren.
Er meinte wohl mit erneut ausschreiben
if(($x==4) or ($x==2)) statt if(($x==3 or 4 or 5)), nehme ich an.
Cheers,
Baba
[latex]Mae govannen![/latex]
aber man muss ja immer die Bedingung erneut ausschreiben...
Dann nimm doch switch ... case ... default
http://de3.php.net/manual/en/control-structures.switch.phpDas sind wohl zwei verschiedene Dinge. Er will nicht auf verschiedene Werte von x verschieden reagieren, sondern auf verschiedene Werte von x gleich reagieren.
switch ($x) {
case 4:
case 2:
case 27:
foo();
bar();
}
Sonderlich schön ist's aber auch nicht.
(Auszeichnung als Code bekomme ich aus technischen Gründen nicht hin)
Stur lächeln und winken, Männer!
Kai
Om nah hoo pez nyeetz, Kai345!
(Auszeichnung als Code bekomme ich aus technischen Gründen nicht hin)
switch ($x) {
case 4:
case 2:
case 27:
foo();
bar();
}
Immer noch? Woran lags/liegts?
Matthias
[latex]Mae govannen![/latex]
(Auszeichnung als Code bekomme ich aus technischen Gründen nicht hin)
Immer noch? Woran lags/liegts?
Ich bin total verblödet. Ich hätte die Tags einfach per Hand schreiben können :( code lang=php /code mit den eckigen Klammern drumherum wäre für ein weniger vermatschtes Hirn sicherlich keine Aufgabe gewesen.
Hinderungsgrund war jedenfalls, daß ich auf meinem alten Schlepptopf einen Mausfall *g* hatte und irgendwie mit dem Tatschpätt *g2* und den beiden Maus-Ersatz-Buttons nichts selektiert bekam bzw. sobald ich den Button losließ die Selektion wieder weg war. Ich bin ohne Nager wohl hilflos
Stur lächeln und winken, Männer!
Kai
Om nah hoo pez nyeetz, Kai345!
Ich hätte die Tags einfach per Hand schreiben können :( code lang=php /code mit den eckigen Klammern drumherum wäre für ein weniger vermatschtes Hirn sicherlich keine Aufgabe gewesen.
oder den PHP-Button anklicken, das ergibt [code lang=php]
[/code], und dann zwischen die Tags schreiben. ;-)
Matthias
hi,
soweit die zahlen in einer reihe sind, die immer +1 ist geht das auch so:
if ($x >= 3 AND $x <= 9) {
echo "x ist zwischen 3 und 9";
}
Achtung, dabei würden jetzte Kommawerte (3.5) funktionieren!
Nur so als Denkanregung einfach =)
Gruß Niklas
gudn tach!
soweit die zahlen in einer reihe sind, die immer +1 ist geht das auch so:
if ($x >= 3 AND $x <= 9) {
echo "x ist zwischen 3 und 9";
}
>
> Achtung, dabei würden jetzte Kommawerte (3.5) funktionieren!
deswegen in so einem fall besser mit range arbeiten:
~~~php
if(in_array($x, range(3, 9))){
echo "x ist eine ganzzahl >=3 und <=9";
}
Hallo,
in_array($x, range(3, 9))
Oh Gott, diese Benennungen in PHP, es ist so unglaublich schlimm! Wie soll man bitte darauf kommen dass range() ein Array ausspuckt? Ich hätte ehrlich gesagt angenommen es spuckt was vom Typen "Range" aus, wie bei Ruby:
(1..10).include? 2 # -> true
(1..10).include? 22 # -> false
bzw. hier die Implementation in Java:
package types;
import java.util.Iterator;
public class Range<T extends Comparable> {
private T from = null;
private T to = null;
public Range( T start, T end ){
this.from = start;
this.to = end;
}
public boolean contains( T value ) {
return from.compareTo( value ) <= 0 && to.compareTo( value ) >= 0;
}
}
Range r = new Range(new Date(2009, 1,1), new Date(2012, 12, 31));
System.out.println(r.contains(new Date(2010, 1,1)));
// true
Jeena
Hallo,
in_array($x, range(3, 9))
Oh Gott, diese Benennungen in PHP, es ist so unglaublich schlimm! Wie soll man bitte darauf kommen dass range() ein Array ausspuckt?
Weil es so im Handbuch steht?
Tach!
in_array($x, range(3, 9))
Oh Gott, diese Benennungen in PHP, es ist so unglaublich schlimm! Wie soll man bitte darauf kommen dass range() ein Array ausspuckt? Ich hätte ehrlich gesagt angenommen es spuckt was vom Typen "Range" aus, wie bei Ruby:
Auch Python erzeugt mit range() ein Array (genauer: eine Liste). Bei C# heißt es auch so. Vielleicht tanzt in dem Fall Ruby aus der Reihe?
dedlfix.
Hallo,
Auch Python erzeugt mit range() ein Array (genauer: eine Liste). Bei C# heißt es auch so. Vielleicht tanzt in dem Fall Ruby aus der Reihe?
So weit ich weiß gibt C#'s Range einfach ein IEnumerable<T> zurück welches wiederum eine Methode ToArray() hat, die natürlich völlig akzeptabel ist.
Enumerable.Range(0, 15).ToArray();
Aber damit wird man kaum arbeiten, außer man braucht wirklich ein Array von Integern, sehr oft kommt es ja vor dass man ein Range von Datum hat oder Fließkommazahlen oder was auch immer.
Und Python war mir schon immer suspekt, genau wegen solcher Sachen. Aber ja, ich bin gegenüber PHP wohl auch ziemlich voreingenommen weil es die ganze Zeit Objektorientierung und dieses "in Funktionen Denken" von C so fröhlich miteinander vermischt dass ich nie weiß wann welches passiert. Das gleiche gilt übrigens auch für Python.
Jeena
gudn tach!
in_array($x, range(3, 9))
Oh Gott, diese Benennungen in PHP, es ist so unglaublich schlimm!
grundsaetzlich stimme ich dir zu, aber in diesem fall finde ich es gar nicht so abwegig. ich hatte es auch selbst nicht auswendig gewusst, sondern hab einfach im manual nach in_range gesucht (weil ich es offenbar falsch in erinerung hatte) und bin so von der internen suchmachine auf die beiden richtigen funktionen "in_array" und "range" hingewiesen worden. ich mag php auch nicht besonders und finde das manual nicht sehr gut, aber in diesem fall hat das manual (fuer mich) perfekt funktioniert.
Wie soll man bitte darauf kommen dass range() ein Array ausspuckt?
"range" bedeutet u.a. "intervall" und hier moechte man ja ein (diskretes) intervall haben, also in php ein array.
(1..10).include? 2 # -> true
(1..10).include? 22 # -> false
nicht schlecht. fast so schoen wie in perl:
~~~perl
2 ~~ [1..10]; # true
22 ~~ [1..10]; # false
prost
seth
Hallo,
nicht schlecht. fast so schoen wie in perl:
2 ~~ [1..10]; # true
22 ~~ [1..10]; # false
Ich möchte fast sagen schöner weil ~~ aussieht wie -- und ich es nicht mit "includes" oder "contains" oder ähnlichem in Verbindung setzen würde.
Jeena
![](http://jeenaparadies.net/pavatar.png)
--
[Jlog](http://jeenaparadies.net/webdesign/jlog/) | [Gourmetica Mentiri](http://jeenaparadies.net/gourmetica-mentiri/)
gudn tach!
nicht schlecht. fast so schoen wie in perl:
2 ~~ [1..10]; # true
22 ~~ [1..10]; # false
Ich möchte fast sagen schöner
;-)
da bist du sicher nicht der einzige.
weil ~~ aussieht wie -- und ich es nicht mit "includes" oder "contains" oder ähnlichem in Verbindung setzen würde.
ja, ~~ ist so ein bissl ein universal-operator und heisst deswegen auch allgemein "smartmatch operator", der kann noch viel mehr kann als nur sagen, ob ein skalar in einem array vorkommt, man kann ihn auf z.b. ohne syntaxaenderung mit regulaeren ausdruecken statt skalaren oder mit hashes statt arrays benutzen. er verkoerpert so ein bissl das gegenteil der phython-maxime "explicit is better than implicit".
wie so oft, ist die syntax extrem kurz und deswegen nicht mehr so gut fuer nicht-perl-programmierer lesbar.
prost
seth
2 ~~ [1..10]; # true
22 ~~ [1..10]; # false
Sollte ich mal eine Sprache erfinden, wird sie Operatoren wie »@>--}---« und »<\*)))><« besitzen, damit jeder weiß, was gemeint ist.
Mathias
--
[Chaplin - An Application Architecture Using Backbone.js](https://github.com/chaplinjs/chaplin)
Moin molily,
2 ~~ [1..10]; # true
22 ~~ [1..10]; # false
>
> Sollte ich mal eine Sprache erfinden, wird sie Operatoren wie »@>--}---« und »<\*)))><« besitzen, damit jeder weiß, was gemeint ist.
Das hier ist gültiges Perl 6:
multi sub infix:«<\*)))><»(Int $x, Int $y) {
return $x \* $y;
}
say 10 <\*)))>< 10;
LG,
CK
--
<http://ck.kennt-wayne.de/>
say 10 <*)))>< 10;
gudn tach!
Das hier ist gültiges Perl 6:
multi sub infix:«<*)))><»(Int $x, Int $y) {
return $x * $y;
}
say 10 <*)))>< 10;
boah, perl 6 wird so geil! :-)
als mini-ergaenzung: es gibt in perl sogar einen goatse-operator, siehe z.b.
http://www.catonmat.net/blog/secret-perl-operators/ (ist keine shock-seite).
prost
seth
Moin seth,
boah, perl 6 wird so geil! :-)
Vor allem so extrem coole Features wie junctions (mit dem man das Problem des OPs gut hätte lösen können, btw :-), parameter constraints und grammars lassen mir das Wasser im Munde zusammenlaufen :)
LG,
CK
Hallo,
Sollte ich mal eine Sprache erfinden, wird sie Operatoren wie »@>--}---« und »<*)))><« besitzen, damit jeder weiß, was gemeint ist.
Das sieht mir verdächtig danach aus dass du dir hier geistiges Eigentum zu eigen machen möchtest, denn es sieht Brainfuck schon verdammt ähnlich.
Jeena
Moin Jeena,
Sollte ich mal eine Sprache erfinden, wird sie Operatoren wie »@>--}---« und »<*)))><« besitzen, damit jeder weiß, was gemeint ist.
Das sieht mir verdächtig danach aus dass du dir hier geistiges Eigentum zu eigen machen möchtest, denn es sieht Brainfuck schon verdammt ähnlich.
Du mit deiner Kindergarten-Sprache. Echte Programmierer schreiben natürlich Malbolge!
LG,
CK
Hallo,
Du mit deiner Kindergarten-Sprache. Echte Programmierer schreiben natürlich Malbolge!
Das sicherlich aber Mollily hat offensichtlich da nicht abgeschaut weil er ein Feigling ist.
Jeena
gudn tach!
2 ~~ [1..10]; # true
22 ~~ [1..10]; # false
Sollte ich mal eine Sprache erfinden, wird sie Operatoren wie »@>--}---« und »<*)))><« besitzen, damit jeder weiß, was gemeint ist.
du musst nur ganz genau hinschauen, da steht "2 in [1..10];" schau ganz genau hin. "2 in [1..10];" zaehle langsam bis 3. schau ganz genau hin. "2 in [1..10];" wenn's du's immer noch nicht siehst, dann musst du bloss das perl-manual lesen und noch mal lange genug hinschauen, bis es klick macht.
danach willst du auch nie wieder preg_matchblabla, preg_replacepupsdreck, oder \\\\\ schreiben, sondern nur noch =~.
prost
seth
ps: ja, ein "in" (also "$a in @b") wenigstens als alias waere eigentlich huebsch gewesen.