Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnis Frage

Einklappen

Neue Werbung 2019

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

  • Verständnis Frage

    Hallo,

    ich habe mal eine Verständnisfrage, warum geht $foo['bar'] aber $foo[0] nicht? Zumindestens bei mir

    LG
    Kerstel

  • #2
    Weil PHP nicht aus Zauberhand $foo[0] definiert?!
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Zitat von kerstel Beitrag anzeigen
      Hallo,

      ich habe mal eine Verständnisfrage, warum geht $foo['bar'] aber $foo[0] nicht? Zumindestens bei mir

      LG
      Kerstel
      PHP-Code:
      $foo array_values($foo);
      echo 
      $foo[0]; 
      geht dann
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

      Kommentar


      • #4
        danke

        Kommentar


        • #5
          Damit der Name noch gefallen ist:

          Weil bei $foo['bar'] das $foo ein assoziatives Array ist http://www.php-kurs.com/assoziatives-array.htm

          Mit var_dump($foo) oder print_r($foo) kannst du die den Inhalt des Arrays ausgeben lassen.

          PHP-Code:
          $foo = array();

          $foo["a"] = "Hans";
          $foo["b"] = "im";
          $foo["c"] = "Glück";

          print_r($foo);
          /* 
          Array
          (
              [a] => Hans
              [b] => im
              [c] => Glück
          )*/

          $foo array_values($foo); 

          print_r($foo);
          /*

          Array
          (
              [0] => Hans
              [1] => im
              [2] => Glück
          )
          */ 
          Da kannst du den Unterschied sehen.

          LG
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Ich halte nicht viel vom Begriff "assoziatives Array" in der PHP-Welt, denn es suggeriert das es unter PHP noch andere Arrays (numerische) gibt.

            Wo soll in dieser Begriffswelt dieses Array untergebracht werden?
            PHP-Code:
            $foo = array(1,"b" => 2=> 3"7" => 77); 

            Kommentar


            • #7
              gemischt, ein "feature" , ...

              Stimme dir im Grunde ja auch zu, ich wollte nur den Begriff erwähnt haben, kann nützlich sein wenn man ev. mal nach etwaigen Spezialtäten sucht, oder andere darüber sprechen, oder, .. (rein auf PHP bezogen jetzt).
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Zitat von jspit Beitrag anzeigen
                Ich halte nicht viel vom Begriff "assoziatives Array" in der PHP-Welt, denn es suggeriert das es unter PHP noch andere Arrays (numerische) gibt.
                Nach dem selben Schema könnte man dann auch sagen, man hielte nichts vom Begriff Array, weil ein "Array" in PHP ja kein reiner Array ist. :P

                Kommentar


                • #9
                  Zitat von jspit Beitrag anzeigen
                  Ich halte nicht viel vom Begriff "assoziatives Array" in der PHP-Welt, denn es suggeriert das es unter PHP noch andere Arrays (numerische) gibt.
                  Gibt es ja auch. Das auch Mischformen möglich sind, wie in deinem Beispiel, wird auch durch das Manual geklärt:

                  Arrays können in PHP gleichzeitig Schlüssel der Typen Integer und String enthalten, da PHP nicht zwischen indizierten und assoziativen Arrays unterscheidet.
                  Da diese Form von gemischten Schlüsseln aber unüblich ist, gibt es eben keinen eigenen Ausdruck. Gibt's in der Mathematik bei Vierecken ja auch. Wenn jeder Winkel unterschiedlich groß ist, ist es ein Viereck, wenn alle Winkel 90° sind, hat man einen exakteren Begriff dafür (Rechteck).


                  Und auch was Arrays in PHP sind wird geklärt:
                  Ein Array in PHP ist tatsächlich eine geordnete Map. Eine Map ist ein Typ, der Werte zu Schlüsseln zuordnet. Dieser Typ ist für einige verschiedene Nutzungsarten optimiert. Er kann als ein Array verwendet werden, als Liste (Vektor), Hash Table (eine Implementierung einer Map), Dictionary, Collection, Stack, Queue und wahrscheinlich noch andere. Da ein Wert eines Arrays ein weiteres Array sein kann sind auch Bäume und mehrdimensionale Arrays möglich.

                  Kommentar


                  • #10
                    Ich halte nicht viel vom Begriff "assoziatives Array" in der PHP-Welt, denn es suggeriert das es unter PHP noch andere Arrays (numerische) gibt.
                    Sehr guter Beitrag. Diese Unterscheidung drückt indirekt aus, dass ein Feld, das einen assoziativen Index besitzt sozusagen noch einen "richtigen" hat, was aber nicht der Fall ist (leider, wäre sehr praktisch). Und das Missverständnis des Themenstarters rührt auch genau daher.
                    Besser, man sagt, php-Felder haben Indices und diese können wild gemischt Zahlen und/oder Buchstaben sein, je nachdem wie man es braucht. Dann ist das klarer.

                    Liebe Grüße

                    Kerstin

                    Kommentar


                    • #11
                      dass ein Feld, das einen assoziativen Index besitzt sozusagen noch einen "richtigen" hat, was aber nicht der Fall ist (leider, wäre sehr praktisch)
                      Doch, das ist der Fall. In der internen Repräsentation. Sonst hätte ein Array nämliche keine Sortierreihenfolge.

                      Und das Missverständnis des Themenstarters rührt auch genau daher.
                      Wer will das schon wissen bei so einem Stub als Threadstart. Genauso kann es daher rühren, dass z.B. manche Datenbankmethoden eben Arrays liefern, in denen sowohl numerische als auch assoziative Keys für den gleichen Wert gesetzt sind.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Doch, das ist der Fall. In der internen Repräsentation. Sonst hätte ein Array nämliche keine Sortierreihenfolge.
                        Es geht um die Hochsprache php und nicht darum, was "unter der Haube" ist. Oder kommt man über php an diese "interne Repräsentation" ran? Das wär ja mal praktisch.
                        Wer will das schon wissen bei so einem Stub als Threadstart.
                        Da muss ich dir Recht geben.

                        Kommentar


                        • #13
                          Oder kommt man über php an diese "interne Repräsentation" ran? Das wär ja mal praktisch.
                          Indirekt mit array_slice z.B. Oder auch über die Iteration über die Werte (foreach). Aber [xy] ist nunmal der Zugriff über den Schlüssel, nicht über die Position. In numerischen Arrays kann (kann!) diese dem Index entsprechen, genauso können die Schlüssel auch in anderer Reihenfolge angelegt sein oder sortiert oder anderweitig angeordnet worden sein.

                          PHP-Code:
                          $foo = array (
                          'a'=>'a','b'=>'b','c'=>'c','d'=>'d'
                          );

                          var_dump (array_slice ($foo,2,1)); //c
                          unset ($foo['a']);
                          var_dump (array_slice ($foo,2,1)); //d 
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            Zitat von Kerstin83 Beitrag anzeigen
                            Es geht um die Hochsprache php und nicht darum, was "unter der Haube" ist. Oder kommt man über php an diese "interne Repräsentation" ran? Das wär ja mal praktisch.
                            Jein. Rankommen tust du da natürlich nicht (wozu wäre das praktisch?). In manchen Situationen hat die interne Repräsentation aber eben Auswirkungen. Ein prominentes Beispiel hat nikic z.B. mal in seinem Blog gezeigt: Supercolliding a PHP array

                            Kommentar


                            • #15
                              Von der C-Ebene rede ich noch gar nicht (obwohl der Artikel spannend ist). Sondern davon, dass z.B. ein existierender Befehl wie uasort zeigt, dass es nicht nur die Schlüssel als Index eines Arrays gibt, sondern auch noch eine zweite Zugriffsebene, die die Reihenfolge der Elemente repräsentiert.
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar

                              Lädt...
                              X