Simon: Letztes Element aus array löschen

Hi,

bin grad am versuchen das letzte Element aus einem array zu löschen nur haut das irgendwie nicht so hin:

Ich hab hier ein array:

$array = explode(",",$_POST['textarea']);

ich wollte das ganze mit array_pop machen:
$array = array_pop(explode(",",$_POST['textarea']));

nur bekomm ich dann mit:
var_dump($array) nur string(0) ""

geht das vielleicht auch anders ?

MfG
Simon

  1. Hi!

    bin grad am versuchen das letzte Element aus einem array zu löschen nur haut das irgendwie nicht so hin:
    $array = array_pop(explode(",",$_POST['textarea']));

    Lies bitte im PHP-Handbuch nach, wie diese Funktion arbeitet, und was sie konkret zurückgibt.

    geht das vielleicht auch anders ?

    Als Einzeiler bekommst du das mit array_pop() nicht hin, jedoch mit array_slice(). Beachte die Hinweise zu den Parametern, besonders die von length.

    Lo!

  2. Hallo Simon,

    $array = array_pop(explode(",",$_POST['textarea']));
    nur bekomm ich dann mit:
    var_dump($array) nur string(0) ""

    Works as designed.
    (Vermutlich war war der letzte Inhalt des Arrays ein leerer String.)

    Manual zu array_pop():
      array_pop() liefert den letzten Wert von array , und verkürzt array  um ein Element.
      Ist array  leer (oder kein Array), wird NULL  zurückgegeben.
      In letzterem Fall wird auch eine Warnung  erzeugt.

    Ausserdem ist $array ein etwas unglücklicher Name für eine Variable.
    (Könnte evtl. Probleme geben, da reserviertes Wort.)

    Probier mal folgendes:

    $textarray = explode(",",$_POST['textarea']);
    // var_dump($textarray);
    $kuerzungsresultat=array_pop($textarray);
    // Kontrolle:
    // echo "Kuerzungsresultat: [$kuerzungsresultat]";
    // var_dump($textarray);

    _Jetzt_ ist $textarray um das letzte Element verkürzt.

    mfg Thomas

    1. Hi!

      Ausserdem ist $array ein etwas unglücklicher Name für eine Variable.

      Ja, weil er nicht beschreibend genug ist. (Abgesehen von dem unzutreffenden Inhalt wegen der falsch verstandenen Arbeitsweise von array_pop().)

      (Könnte evtl. Probleme geben, da reserviertes Wort.)

      Nein. Variablennamen fangen immer mit einem $ an und sind somit nicht verwechselbar mit Schlüsselwörtern. Es gibt auch seitens PHP keine Empfehlung, Schlüsselwörter als Variablennamen zu meiden.

      Lo!

      1. Hallo,

        Ausserdem ist $array ein etwas unglücklicher Name für eine Variable.
        (Könnte evtl. Probleme geben, da reserviertes Wort.)

        Nein. Variablennamen fangen immer mit einem $ an und sind somit nicht verwechselbar mit Schlüsselwörtern.

        Das stimmt im Prinzip schon.

        Es gibt auch seitens PHP keine Empfehlung, Schlüsselwörter als Variablennamen zu meiden.

        Doch, ich verstehe das folgende Zitat durchaus als eine solche Empfehlung:

        Liste der reservierten Wörter
          Die folgenden Listen enthält in PHP vordefinierten Bezeichner.
          Sie sollten die reservierten Worte aus diesen Listen keinesfalls
          in eigenen Skripten als Bezeichner benutzen. Die Listen enthalten
          Schlüsselworte, vordefinierte Variablen, Konstanten und Klassennamen.

        Liste der Schlüsselworte
          abstract, and, array(), as, break, ...

        mfg Thomas

        1. Ergänzung:
          Liste der Schlüsselworte
            "Die Nutzung als Variablenname ist in der Regel möglich,
            sollte aber unterlassen werden um Verwirrung zu vermeiden."

          Also hatten wir beide ein Stück weit recht ... ;-)

          mfg Thomas

    2. Hallo Simon,

      $array = array_pop(explode(",",$_POST['textarea']));
      nur bekomm ich dann mit:
      var_dump($array) nur string(0) ""

      Works as designed.
      (Vermutlich war war der letzte Inhalt des Arrays ein leerer String.)

      Das ist ja auch eigentlich mein Problem, warum ich das letzte Element löschen will weil es leer ist. Ich bekomme immer ein leeres von explode zurück.

      Aber Jetzt funktioniert es
      Danke,
      MfG
      Simon

      1. Hi!

        $array = array_pop(explode(",",$_POST['textarea']));
        Das ist ja auch eigentlich mein Problem, warum ich das letzte Element löschen will weil es leer ist. Ich bekomme immer ein leeres von explode zurück.

        Dann wäre die eigentliche Problemlösung das Entfernen der Zeichen, die du nicht brauchst. Dann liefert explode() auch keine ungewollten Elemente. Zum Löschen von Zeichen an den Enden eines Strings eignen sich ltrim(), rtrim() und trim().

        Lo!

  3. Hello,

    bin grad am versuchen das letzte Element aus einem array zu löschen nur haut das irgendwie nicht so hin:

    Ich hab hier ein array:

    $array = explode(",",$_POST['textarea']);

    ich wollte das ganze mit array_pop machen:
    $array = array_pop(explode(",",$_POST['textarea']));

    nur bekomm ich dann mit:
    var_dump($array) nur string(0) ""

    geht das vielleicht auch anders ?

    Ja, das geht so:

      
        $array = explode(',', $_POST['textarea'], -1);  
        print_r($array);  
    
    

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de