Index 0 aus array entfernen?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Index 0 aus array entfernen?

    Hallo,

    Ich möchte per echo den inhalt aller array-elemente ausgeben, ausser dem ersten elemend - index 0

    Das habe ich so gemacht:
    PHP Code:
    foreach($arr as $line)
     {
    $zt=explode("|",trim($line));
      echo 
    "<br />".$zt[1]."|".$zt[2]."|".$zt[3]."|".$zt[4]."|".$zt[5];
     } 
    Irgendwie sagt mir mein gefühl das man das kürzer schreiben kann.
    Geht das oder muß die ECHO-Zeile so lang sein?
    ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

  • #2
    PHP Code:
    foreach ($arr as $line) {
        echo 
    "<br />" trim(substr($linestrpos($line"|")));

    Last edited by h3ll; 02-07-2009, 12:23.

    Comment


    • #3
      array_shift() und implode() könnten helfen.

      Alternativ:
      strpos() und substr()
      Wir werden alle sterben

      Comment


      • #4
        Danke h3ll

        Bei dir ist noch'n kleiner schönheitsfehler drin, der string befinnt mit einm | der dort weg sollte.


        ...aber ich hatte selber eine zündende idee, und zwar beinhaltet index 0 eine timestamp und ist somit immer gleich lang, habe jetzt das hier angewendet

        echo "<br />".trim(substr($line,11));

        das funktioniert sehr gut.
        ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

        Comment


        • #5
          Originally posted by RamonaS View Post
          Danke h3ll

          Bei dir ist noch'n kleiner schönheitsfehler drin, der string befinnt mit einm | der dort weg sollte.
          Dann erhöhe den Wert des Offsets um 1.

          Comment


          • #6
            Jetzt wirds peinlich hier:-)

            >Dann erhöhe den Wert des Offsets um 1.
            Was ist das denn wieder....Offsets kenn ich nur von meinen fehlermeldungen, wenn ich mit einem array was anstelle bis nix mehr geht:-)
            ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

            Comment


            • #7
              Originally posted by RamonaS View Post
              Jetzt wirds peinlich hier:-)

              >Dann erhöhe den Wert des Offsets um 1.
              Was ist das denn wieder....Offsets kenn ich nur von meinen fehlermeldungen, wenn ich mit einem array was anstelle bis nix mehr geht:-)
              Ich meine die Startposition von substr():

              PHP: substr - Manual

              Comment


              • #8
                Originally posted by RamonaS View Post
                Jetzt wirds peinlich hier:-)
                Ja - weil du dich jetzt schon zum wiederholten Male darauf hinweisen lässt, bitte die [quote]-Tags zu nutzen, wenn du aus einem Vorposting zitierst!
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Comment


                • #9
                  Dabei genügt es schon, einfach auf den "Zitieren"-Button zu drücken.

                  Originally posted by RamonaS View Post
                  ...aber ich hatte selber eine zündende idee, und zwar beinhaltet index 0 eine timestamp und ist somit immer gleich lang, habe jetzt das hier angewendet

                  echo "<br />".trim(substr($line,11));
                  Wer sagt, dir dass ein Timestamp immer eine Zahl mit elf Ziffern ist?

                  PHP Code:
                  echo date('Y-m-d H:i:s'1000000000), $lf;
                  // gibt: 2001-09-09 03:46:40 (für CET) 
                  Also schneidet dein Script bei Daten vor dem 9. September ein Zeichen zu viel ab.
                  Ich kann mir allerdings deine Antwort auf dieses Argument schon denken ...


                  das funktioniert sehr gut.
                  Das liegt im Auge des Betrachters, ich würde einen Einzeiler vorziehen.

                  PHP Code:
                  $zt 'a|b|c|d|e';
                  $lf '<br />';

                  // die unvermeidliche preg_replace()-Lösung: B-)
                  echo preg_replace('/\A[^|]*\|/'''$zt), $lf
                  Der passt auch noch, wenn sich das Format des zu entfernenden Teils einmal ändert, weil keine feste Länge angenommen, sondern nach dem Trennzeichen gesucht wird. Man kann das natürlich auch mit strpos() und substr() nachbauen ...

                  Die Standard-Stringfunktionen von PHP haben das Problem, dass sie das erste Trennzeichen leider immer stehen lassen:

                  PHP Code:
                  echo strstr($zt'|'), $lf;
                  echo 
                  strpbrk($zt'|'), $lf
                  Eine interessante Lösung wäre auch noch die mit preg_split(), aber man muss dazu dann noch list() bemühen. Eleganten Quellcode zu schreiben, ist halt in PHP nicht wirklich drin:
                  PHP Code:
                  // preg_split(,$zt, 2) teilt $zt nur einmal (in [b]2[/b] Teile),
                  // list (, $out) verwirft den ersten gleich wieder
                  list (, $out) = preg_split('/\|/'$zt2);
                  echo 
                  $out$lf
                  Eventuell geht das auch mit explode() -- ich war zu faul, es zu testen.

                  Ein (in PHP zumindest bis 5.2.x nicht möglicher) Einzeiler wäre:
                  PHP Code:
                  echo (preg_split('/\|/'$zt2))[1], $lf
                  In anderen Script-Sprachen geht sowas.
                  Last edited by fireweasel; 03-07-2009, 10:44.
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Comment


                  • #10
                    Originally posted by fireweasel View Post

                    Also schneidet dein Script bei Daten vor dem 9. September ein Zeichen zu viel ab.
                    Ich kann mir allerdings deine Antwort auf dieses Argument schon denken ...

                    // die unvermeidliche preg_replace()-Lösung: B-)
                    echo preg_replace('/\A[^|]*\|/', '', $zt), $lf;
                    Naja, ich hab eigentlich keine daten von der zeit als timestamp noch kürzer als 10 zeichen war

                    ...aber ich werde die "unvermeidliche preg_replace()-Lösung" von dir zum einsatz bringen.

                    Ich muß dir allerdings gestehen, die regex sind für mich noch viel schlimmer als mit arrays rum zu handieren. Ich lass die dann gleich so denn wenn ich da dran fummel tut sie garantiert nicht mehr.

                    Ok danke für den hinweiß ich werde das dann einbauen.
                    ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                    Comment


                    • #11
                      @fireweasel

                      So ich hab das jetzt so gemacht:
                      PHP Code:
                      if(isset($_GET['uo']) and $_GET['uo']=="s"# Link wurde geklickt
                       
                      {echo "<br /><br />";
                        
                      $arr=explode("\n",file_get_contents($_SERVER["DOCUMENT_ROOT"]."/useronline.txt"));
                        foreach(
                      $arr as $line)
                         {echo 
                      "<br />".preg_replace('/\A[^|]*\|/','',$line),"\n";} # Ganze Zeile anzeigen, ausser Arayy Index 0
                       
                      }
                      else
                       {echo 
                      "<a href='".$_SERVER['PHP_SELF']."?uo=s'>(".$all.")</a>";}

                      unset(
                      $dx,$arr,$line,$zt); 
                      Würdest du sagen das dieser scriptteil jetzt perfekt ist oder nur zu 100% ok?
                      Für änderungsvorschläge hab ich immer ein offenes auge.


                      ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                      Comment


                      • #12
                        Nein, das ist nicht schön!
                        1. witzig eingerückt! (kaum lesbar)
                        2. PHP_SELF ermöglicht u.U. XSS Attacken
                        3. Wozu das unset() ?
                        Wir werden alle sterben

                        Comment


                        • #13
                          1. Viel kürzer von der Textlänge ist das jetzt auch nicht.
                          2. Übersichtlicher ist es auch sicher nicht.
                          3. Schneller schon gar nicht.
                          Warum also sowas?

                          Comment


                          • #14
                            Originally posted by RamonaS View Post
                            ...aber ich werde die "unvermeidliche preg_replace()-Lösung" von dir zum einsatz bringen.
                            Das ist in so einem simplen Fall keine gute Idee.

                            explode leistest hier ganz simpel das gewünschte.
                            Reguläre Ausdrücke sind i.a.R. kostenintensiver als einfache Stringfunktionen.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Comment


                            • #15
                              Originally posted by combie View Post
                              Nein, das ist nicht schön!
                              1. witzig eingerückt! (kaum lesbar)
                              2. PHP_SELF ermöglicht u.U. XSS Attacken
                              3. Wozu das unset() ?
                              zu 2:
                              Was macht ihr da an stelle von PHP_SELF ? Das soll halt flexibel sein, wird im footerbereich eigeblendet auf jeder seite, also kann ich da kein festen dateinamen einsetzen.

                              zu 3:
                              Damit ich auch sicher bin das die varablen/arrays sich nicht addieren oder sowas in der art.

                              Wie würdest du dieses script schreiben wenn es deins wäre?
                              ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                              Comment

                              Working...
                              X