Ankündigung

Einklappen
Keine Ankündigung bisher.

Indizierung eines zurückgegebenen Arrays

Einklappen

Neue Werbung 2019

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

  • Indizierung eines zurückgegebenen Arrays

    Liebes Forum

    ich habe eine Funktion, die ein Feld liefert (return):
    PHP-Code:
    function get_things(){
    ...
    return (
    $a)
    }

    Das zurückgegebene Array sieht z.Bfolgendermaßen aus:
    $a => array("thing" => array("name" => "Tisch",
                                           
    "Größe" => "2m") ); 
    nun brauche ich nur das innere Feld "thing".
    Das kann ich so machen:
    PHP-Code:
    $b get_things();
    $b $b['thing']; 
    Geht das auch einzeilig? Folgendes geht ja nicht:
    PHP-Code:
    $b =  get_things()['thing']; 
    Liebe Grüße

    Kerstin


  • #2
    Zitat von Kerstin83 Beitrag anzeigen
    Geht das auch einzeilig? Folgendes geht ja nicht:
    PHP-Code:
    $b =  get_things()['thing']; 
    PHP mal Updaten, dann geht das auch.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Hallo, danke.
      ich habe php 5.5.11 - Das ist doch gar nicht so alt.

      Und das Script soll auch nicht nur auf den neuesten php-Versionen laufen.
      Gibt es eine andere Möglichkeit? Sonst ist das auch ok, möchte nur nicht umständlicher Programmieren als nötig.

      Liebe Grüße

      Kerstin

      Kommentar


      • #4
        Mit deiner PHP-Version sollte es eigentlich genau so funktionieren. Wenn du auch für ältere Versionen entwickelst musst du wohl doch auf 2 Zeilen aufteilen oder gleich in der Funktion das Unterarray zurückgeben.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Ich denke du versuchst Dinge zu optimieren, die überhaupt unwichtig sind. Konzentriere dich lieber auf sachen die wichtig sind.
          Neu bei PHP, lerne aktuell OOP

          Kommentar


          • #6
            Seh ich auch so. Und bei der Namensgebung würde ich gleich mal anfangen. get_things liefert ein Array mit dem Schlüssel thing - WTF? Was "Indizierung" bedeutet, kannst Du auch gleich mal nachschlagen.
            --

            „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


            • #7
              Vielen Dank tkausl!!!

              Die Funktion heißt natürlich nicht wirklich so. get_things ist nur ein Beispiel. Tisch und Größe sind genauso erfunden.
              things finde ich aber immer noch besser als foo und bar.

              Ich finde Schreibweisen doch recht wichtig. Insbesondere, wenn man sich mit fremdem Code rumquälen muss ist es gut, die ganze Bandbreite der Syntax zu kennen.
              Und da es hier ja scheinbar von der php Version abhängt ist es um so wichtiger.

              Indizierung ist also nicht richtig. Aber welches ist das richtige Wort? Ich würde es dann ändern.

              Kommentar


              • #8
                Laut PHP.net nennt man es Offiziell "Function array dereferencing"
                Function array dereferencing has been added, e.g. foo()[0].
                PHP 5.4.0
                Zitat von nikosch
                Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                Kommentar


                • #9
                  Danke nochmal, ich habe auch mal nachgeschlagen.
                  Funktioniert bei mir allerdings nicht und ergibt einen Fehler. Liegt vielleicht am CMS ?! Keine Ahnung, dann mach ich es eben zweizeilig. Aber gut zu wissen, dass es "Function array dereferencing" gibt.
                  Danke!

                  Kommentar


                  • #10
                    Zitat von Kerstin83 Beitrag anzeigen
                    Funktioniert bei mir allerdings nicht und ergibt einen Fehler. Liegt vielleicht am CMS ?!
                    Das ist PHP-Syntax, auf die ein CMS garkein einfluss hat. Entweder hast du doch eine ältere Version oder die Fehlermeldung meldet etwas ganz anderes, wäre halt gut die mal sehen zu können...
                    Zitat von nikosch
                    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                    Kommentar


                    • #11
                      so sieht der Fehler aus:
                      Parse error: syntax error, unexpected '[' in F:\xampp\htdocs\engine\...\Bootstrap.php on line 29

                      Kommentar


                      • #12
                        Dann scheint deine PHP-Version doch nicht so neu zu sein...

                        PHP-Code:
                        <?php

                        function whatever(){
                            return [
                        'hello' => 'World'];
                        }

                        echo 
                        whatever()['hello'];
                        Bringt bei mir wie vorgesehen 'World'
                        Zitat von nikosch
                        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                        Kommentar


                        • #13
                          Insbesondere, wenn man sich mit fremdem Code rumquälen muss ist es gut, die ganze Bandbreite der Syntax zu kennen.
                          Und nochmal, Dir diese Syntax anzueignen, ist Deine Aufgabe. Es kann jetzt nicht der Sinn des Forums sein, hier die nächsten 20 Wochen Zweizeiler reinzuwerfen und abwechselnd zu fragen "geht das einfacher" und "wie funktioniert das".
                          --

                          „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


                          • #14
                            Warum nutzt du nicht Parameter für deine Funktion?
                            PHP-Code:
                            function get_things($key null){ 
                              
                            ... 
                            return 
                            $key===null $a $a[$key];
                            }

                            $b get_things('thing'); 
                            Bessere Namen und eine Fehlerbehandlung für nichtexistente Schlüssel sind hier noch angebracht.
                            PHP-Klassen auf github

                            Kommentar


                            • #15
                              Ich stimme nikosch zu. Zusätzlich solltest Du deinen code style dem code style des projektes (teams?) anpassen.

                              Ausserdem bezweifle ich, dass du dir auch nur 5 Minuten Zeit genommen hast, um php.net oder google zu "fragen". Du solltest unbedingt lernen Dokus zu lesen.
                              Neu bei PHP, lerne aktuell OOP

                              Kommentar

                              Lädt...
                              X