jens65m: foreach mit bedingung?!

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

  1. 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

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Wenn if nunmal das Mittel der Wahl ist, warum dann ohne?

  3. foreach($arr as $part){  
      if($part != "xy"){  
        echo $part;  
      }  
    }
    
  4. 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  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    <http://bergpost.annerschbarrich.de>
    
    1. 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.

      --
      Vergesst Chuck Norris.
      Sponge Bob kann unter Wasser grillen!
      1. 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

        --
        Letztlich basiert alles auf dem Feuer, dem Rad, der Eins und der Null.
          (Gernot Back)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. 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

          --
          __________________________-

          FirefoxMyth
          1. 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

            --
            Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. 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

              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);
              
              1. Hallo,

                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

                Bei 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:(
                
  5. 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!
    
  6. 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