Ankündigung

Einklappen
Keine Ankündigung bisher.

$GET Ausgabe aus array lesen.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • $GET Ausgabe aus array lesen.

    Hi,

    folgende URL möchte ich auslesen
    Code:
    <domain.de>/?stadt&auswahl=&f&m&a&j&z
    Mit diesen Code
    PHP-Code:
    $input array_slice($_GET'2'); // Schneide die ersten 2 Werte weg
    echo '<pre>';
    print_r($input);
    echo 
    '</pre>';


    foreach(
    $input as $value)
    {
    print 
    "Der Schluessel ist ".key($input)." <br>";
    next($input);

    Hier der Output zum oben genannten PHP-Code.
    Code:
    Array
    (
        [f] => 
        [m] => 
        [a] => 
        [j] => 
        [z] => 
    )
    
    Der Schluessel ist m
    Der Schluessel ist a
    Der Schluessel ist j
    Der Schluessel ist z
    Der Schluessel ist
    Frage lautet nun:
    Warum schneidet mir die Schleife den ersten Wert weg ?


  • #2
    PHP-Code:
    $input array_slice($_GET'2'); // Schneide die ersten 2 Werte weg 
    Das ist schon mal nicht korrekt!
    Siehe PHP Manual
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Beachten Sie, dass array_slice() standardmäßig Schlüssel des Arrays zurücksetzt und neu vergibt. Sie können dieses Verhalten ändern, indem Sie preserve_keys auf TRUE setzen. (Quelle: php.net
      Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Zitat von Arne Drews Beitrag anzeigen
        Das ist schon mal nicht korrekt!
        Siehe PHP Manual
        Meinst du die Hochkommatas ?
        Ok. Hab die jetzt weggelassen, was am Ergebnis nichts ändert.
        Hatte somit keinerlei "Fehlerbewandnis".


        Zitat:
        Beachten Sie, dass array_slice() standardmäßig Schlüssel des Arrays zurücksetzt und neu vergibt. Sie können dieses Verhalten ändern, indem Sie preserve_keys auf TRUE setzen. (Quelle: php.net
        Wolf29
        Für mein Bedarf ist das eher uninteressant.
        Grund hierfür ist ja, das ich vorher garkein array hatte, wo ein vorhandener key rückgesetzt wird. Und später kommt es ja nicht mehr zum Einsatz

        Kommentar


        • #5
          wat soll eigentlich das next($input) da? die foreach durchläuft das Array selbstständig. zumindest eine kopie davon...
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            PHP-Code:
            foreach($input AS $key => $value)
            {
            print 
            "Der Schluessel ist ".$key." <br>";

            Mach ertsmal ne vernünftige Schleife...
            "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

            Kommentar


            • #7
              Zitat von Arne Drews Beitrag anzeigen
              wat soll eigentlich das next($input) da? die foreach durchläuft das Array selbstständig. zumindest eine kopie davon...
              öhmm... nö. Tut es nicht. Innerhalb der Schleife erhöhe ich ja nichts mittels i++.
              Würde ich das rausnehmen, würde ich immer wieder den gleichen key auslesen.

              Da ich kein key + current habe, kann ich i++ (als generell das hochzählen) nicht einsetzen.

              Kommentar


              • #8
                Zitat von Dark Guardian Beitrag anzeigen
                Mach ertsmal ne vernünftige Schleife...
                Interessant. Das klappt.
                Ich glaub, da muß ich mich jetzt doch nochmal in's "Schleifenbinden" einlesen.

                Danke

                Kommentar


                • #9
                  Zitat von noop Beitrag anzeigen
                  Meinst du die Hochkommatas ?
                  Ok. Hab die jetzt weggelassen, was am Ergebnis nichts ändert.
                  Hatte somit keinerlei "Fehlerbewandnis".
                  Nein er meint die Parameter.
                  Du liest alles AB dem 2. Element aus.

                  PHP-Code:
                  array_slice($array,0,2); 
                  edit.: achso das wollteste auch...
                  nun gut.
                  cu
                  Grüße
                  Destruction
                  "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                  Kommentar


                  • #10
                    Zitat von Destruction Beitrag anzeigen
                    Nein er meint die Parameter.
                    Du liest alles AB dem 2. Element aus.

                    PHP-Code:
                    array_slice($array,0,2); 
                    öhmm... bei deinen Postingsstand würde ich dir ungern wieder sprechen.
                    Aber das 0,2 schneidet mir alles nach der 2ten Stelle weg.
                    Wenn ich aber erst ab den 3ten Wert die ergnisse haben will, dann muß ich die ersten beiden wegschneiden. Also nur 2.


                    PHP-Code:
                    <?php
                    $input 
                    = array("a""b""c""d""e");

                    $output array_slice($input2);      // liefert "c", "d" und "e"
                    $output array_slice($input, -21);  // liefert "d"
                    $output array_slice($input03);   // liefert "a", "b" und "c"

                    Kommentar


                    • #11
                      sagt mal... kann array_search keine regex nutzen ?


                      Möchte aus der URL alle Übergabewerte raus extrahieren, die genau einen Buchstaben haben. (Andere SQL-Syntax).

                      Eine Alternative Lösung wäre das array in einer Schleife durchlaufen zu lassen und beim treffer dann eine weitere Schleife anzuschubsen, die dann die 1-stelligen Buchstaben raus extrahiert.

                      Aber irgendwie etwas vorbei an array_search + regex.


                      [PHP] if (!empty(array_search('/[^a-z]{1}/', $input)))
                      {
                      echo 'gefunden';
                      }[/PHP

                      Kommentar


                      • #12
                        sagt mal... kann array_search keine regex nutzen ?
                        Sowas schaust Du bitte im Handbuch nach!


                        Was soll das Ganze eigentlich werden? Ist ja ein heilloses Gefrickel!
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Zitat von nikosch Beitrag anzeigen
                          Sowas schaust Du bitte im Handbuch nach!
                          Schon geschehen... bzgl. array_search + regex steht nix drin. Und wenn nix drin steht, wird es wohl nicht gehen.

                          Wird wohl doch auf die Schleife+schleifen-funktion hinauslaufen.

                          Was soll das Ganze eigentlich werden? Ist ja ein heilloses Gefrickel!
                          Definiere mal gefrickel ?

                          Es erstes will ich den $GET in ein array haben <= erledigt.

                          Das array muß ich nun auswerten.
                          Wenn es EINEN Buchstaben drin hat, dann muß eine 2te Schleife ran, die diesen mir dann rausholt.
                          Anhand dessen kann ich dann eine sinnvolle SQL Abfragen zusammenbauen.

                          Z.b.
                          der Besucher sucht innerhalb von Berlin eine Straße, die mit f oder m oder a oder z anfängt.

                          Code:
                          URL = ?stadt&auswahl=&f&m&Berlin&a&j&z
                          
                          Array
                          (
                              [f] => 
                              [m] =>
                              [Berlin] =>  
                              [a] => 
                              [j] => 
                              [z] => 
                          )
                          Das müßte ich jetzt aufsplitten, da 2 verschiedene Suchkreterien drin sind.

                          Code:
                          SELECT * FROM `stadt` 
                          WHERE `ort` = 'Berlin'
                          AND WHERE 'strasse' LIKE 'f%' OR LIKE 'm%'
                          (ungetestet)

                          Kommentar


                          • #14
                            Das ist einfach totaler Unsinn:
                            &auswahl=&f&m&
                            Parameter werden in GET immer nach dem Muster ?name=wert&name=wert etc. angegeben. Auch Arrays sind via ?name[]=wert&name[]=wert möglich. Alles andere ist kopfloses Gefrickel. Vor allem verschiedene Kontexte zu verwursten.

                            Nach wie vor scheint Dir jegliches Grundverständnis für die Sprache, wie auch für programmlogische Abläufe zu fehlen.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Zitat von noop Beitrag anzeigen
                              öhmm... nö. Tut es nicht. Innerhalb der Schleife erhöhe ich ja nichts mittels i++.
                              Würde ich das rausnehmen, würde ich immer wieder den gleichen key auslesen.

                              Da ich kein key + current habe, kann ich i++ (als generell das hochzählen) nicht einsetzen.
                              absoluter quark, du verwechselst foreach mit for, foreach durchläuft das komplette array und liefert enteder das value oder den schlüssel und das value an die notierungen innerhalb der { ... }

                              PHP-Code:
                              $testarray = array("a","b","c","d","e");
                              foreach ( 
                              $testarray as $key => $value ) {
                                echo 
                              $key." -> ".$value."<br />";

                              Ergebnis:
                              Code:
                              0 -> a
                              1 -> b
                              2 -> c
                              3 -> d
                              4 -> e
                              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                              Kommentar

                              Lädt...
                              X