Kelvin Gross: Richtig Spliten (1 Zeile)

Hallo zusammen,
ich sitze gerade an einer PHP Datei und komme nicht weiter, nicht so wie ich es will...

// Testausgabe  
print_r(split(": ", $getContent[1])[1]);  
// Das geht nicht: Parse error: syntax error, unexpected '[' in /data/www/web-app/XXX/Src/de/FunctionsLib.php on line 68
// Testausgabe  
$test = split(": ", $getContent[1]);  
print_r($test[1]);  
// Das geht!

Warum geht diese Methode nicht?
In JavaScript getestet, und klappt wunderbar, PHP nicht, obwohl die selbe Geschichte...

Was ich möchte ist folgendes:
$loginResult = (split(": ", $getContent[1])[1] == "OK") ? true : false;

  1. Hallo Kelvin,

    Was ich möchte ist folgendes:
    $loginResult = (split(": ", $getContent[1])[1] == "OK") ? true : false;

    In PHP muss m.E. noch ein $() drumrum, also: $(split(": ", $getContent[1]))[1], damit der Ausdruck mit dem Split als Variable erkannt wird. Ist ungetestet.

    ciao
    romy

    1. In PHP muss m.E. noch ein $() drumrum, also: $(split(": ", $getContent[1]))[1], damit der Ausdruck mit dem Split als Variable erkannt wird. Ist ungetestet.

      Geschwungene Klammern wenn schon :) wird aber trotzdem nicht funktionieren.

      Zwar könnte man so variable Arraybezeichner verwenden, aber afaik immer noch keine Funktionsrückgabewerte.

      1. Hallo suit,

        In PHP muss m.E. noch ein $() drumrum, also: $(split(": ", $getContent[1]))[1], damit der Ausdruck mit dem Split als Variable erkannt wird. Ist ungetestet.
        Geschwungene Klammern wenn schon :) [...]

        Ahhhhh, ja genau, da war was. Aus dem Kopf sind immer Fehler drin, warum nur?

        ciao
        romy

        1. Ahhhhh, ja genau, da war was. Aus dem Kopf sind immer Fehler drin, warum nur?

          Kompressionsartefakte wegen Überfüllung :) da übersieht man schon mal den Unterschied zwischen einer runden und einer geschwungenen Klammer.

          1. Hi,

            Ahhhhh, ja genau, da war was. Aus dem Kopf sind immer Fehler drin, warum nur?
            Kompressionsartefakte wegen Überfüllung :)

            YMMD!

            Ciao,
             Martin

            --
            Lieber eine Fliege im Porzellanladen
            als ein Elefant in der Suppe.
  2. Auch wenn der Rückgabewert von split ein Array ist, kannst du hinten afaik keinen Schlüssel ansprechen.

    Was ich möchte ist folgendes:
    $loginResult = (split(": ", $getContent[1])[1] == "OK") ? true : false;

    split ist langsam und zudem deprecated und sollte (je nach Anwendungsfall durch explode oder preg_split ersetzt werden)

    preg_match wäre in deinem fall wahrscheinlich marginal schneller (und praktischer) - tendentiell würde ich bei deinem Problem aber strstr() in Kombinantion mit substr() empfehlen.

    1. Hi!

      Ergänzend:

      $loginResult = (split(": ", $getContent[1])[1] == "OK") ? true : false;

      $ergebnis = vergleich;

      ist ausreichend. Damit entsteht bereits ein boolscher Wert. Den nochmal zu testen, um ein boolsches Ergebnis zu liefern ist überflüssig. Probier es aus, indem du mit var_dump() eine Kontrollausgabe machst.

      Lo!

  3. Hallo,

    $loginResult = (split(": ", $getContent[1])[1] == "OK") ? true : false;

    das kann PHP nicht in einem Schritt; frag mich bitte nicht, warum. Der Expression Parser von PHP ist leider nicht in der Lage, einen Ausdruck, der selbst ein Array darstellt, direkt zu indizieren. Du musst tatsächlich den Ausdruck vorher an eine Hilfsvariable zuweisen.

    So long,
     Martin

    --
    Okay, Alkohol ist keine Antwort.
    Aber manchmal vergisst man beim Trinken wenigstens die Frage.