Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array in einem Objekt direkt ansprechen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Array in einem Objekt direkt ansprechen

    Hallo liebe PHP.de Community

    Ich habe für ein Projekt von mir eine API/Library gesucht, mit welcher ich eine Musikdatenbank nach Musik Titel, Interpret, etc. abfragen kann.

    Ich bin auf phpBrainz gestossen und dies scheint auch meinen Anforderungen zu entsprechen.

    Wenn ich nun über die Funktionen einen Titel suche, erhalte ich einen Array mit Objekten und weiteren Arrays zurück.

    PHP-Code:
    require_once("../phpBrainz.class.php");

    //Create new phpBrainz object
    $phpBrainz = new phpBrainz();

    $args = array(
        
    "title"=>"Buddy Holly",
        
    "artist"=>"Weezer"
    );

    $trackFilter = new phpBrainz_TrackFilter($args);
    $trackResults $phpBrainz->findTrack($trackFilter);

    foreach(
    $trackResults as $obj)
    {
        echo 
    "<pre> ";
        
    var_dump($obj);
        echo 
    "</pre>";

    Resultat:
    Code:
    object(phpBrainz_Track)#8 (7) {
      ["id:private"]=>
      string(36) "e9175559-babe-4554-9451-c2f8187f2573"
      ["artist:private"]=>
      object(phpBrainz_Artist)#12 (9) {
        ["id:private"]=>
        string(36) "6fe07aa5-fec0-4eca-a456-f29bff451b04"
        ["name:private"]=>
        string(6) "Weezer"
        ["sortName:private"]=>
        string(0) ""
        ["beginDate:private"]=>
        string(0) ""
        ["endDate:private"]=>
        string(0) ""
        ["type:private"]=>
        NULL
        ["disambiguation:private"]=>
        NULL
        ["releasesCount:private"]=>
        NULL
        ["releasesOffset:private"]=>
        NULL
      }
      ["duration:private"]=>
      int(160293)
      ["puids:private"]=>
      array(0) {
      }
      ["releases:private"]=>
      array(1) {
        [0]=>
        object(phpBrainz_Release)#14 (9) {
          ["artist:private"]=>
          object(phpBrainz_Artist)#19 (9) {
            ["id:private"]=>
            string(0) ""
            ["name:private"]=>
            string(0) ""
            ["sortName:private"]=>
            string(0) ""
            ["beginDate:private"]=>
            string(0) ""
            ["endDate:private"]=>
            string(0) ""
            ["type:private"]=>
            NULL
            ["disambiguation:private"]=>
            NULL
            ["releasesCount:private"]=>
            NULL
            ["releasesOffset:private"]=>
            NULL
          }
          ["title:private"]=>
          string(4) "Now!"
          ["tracksCount:private"]=>
          int(17)
          ["id:private"]=>
          string(36) "645013e4-c068-4412-b318-964c55a080fb"
          ["discCount:private"]=>
          string(0) ""
          ["asin:private"]=>
          NULL
          ["tracks:private"]=>
          array(0) {
          }
          ["score:private"]=>
          int(0)
          ["tracksOffset:private"]=>
          int(10)
        }
      }
      ["title:private"]=>
      string(11) "Buddy Holly"
      ["score:private"]=>
      string(3) "100"
    }
    Mit
    PHP-Code:
    $obj->getArtist()->getName() 
    komme ich zum Beispiel an den Artist-Name heran.

    Wenn ich nun aber an die Releases ran will (oben im Resultat Fett-Gedruckt) muss ich einen Umweg über eine weitere Variable machen (zumindest ist es die einzige Möglichkeit die ich mittlerweile herausgefunden habe, da die Funktion getReleases() einen Array zurück gibt).
    PHP-Code:
    $arr $obj->getReleases();
    echo 
    $arr[0]->getTitle(); 
    Meine Frage: Gibt es dazu auch einen direkteren Weg als über eine zweite Variable?
    Zum Beispiel irgend etwas in diese Richtung? (nachfolgender Code funktioniert nicht)
    PHP-Code:
    $obj->getReleases()[0]->getTracksCount(); 


    Liebe Grüsse und danke für eure Mühe


  • #2
    Muss man für eine derart simple Frage wirklich derart weit ausholen ...?


    Nein, die Möglichkeit, direkt auf ein spezielles Element eines von einer Funktion zurückgegebenen Arrays zuzugreifen, gibt es in PHP momentan noch nicht.

    Kommentar


    • #3
      Muss man für eine derart simple Frage wirklich derart weit ausholen
      Lieber so als andersherum

      Willkommen im Forum.
      --

      „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


      • #4
        Vielen Dank für deine Antwort ChrisB.

        Entschuldige die ausfühliche Beschreibung, aber ich mag meinen Post auch nicht 5 mal wiederholen, bis jemand ne Anwort geben kann.

        Ich komme aus der IT und wenn man Probleme nicht so aufrollt, kriegt man kaum anständige Antworten.

        Werde mich beim nächsten Posting hier dran erinnern mich kürzer zu fassen.

        Kommentar


        • #5
          Nene...bleib mal bei der Art. Dein Post holt zwar weit aus, aber ist immerhin strukturiert. Das ist viel wert.

          Kommentar


          • #6
            Zitat von Baltasar Beitrag anzeigen
            Nene...bleib mal bei der Art. Dein Post holt zwar weit aus, aber ist immerhin strukturiert. Das ist viel wert.
            und wenigstens kommt drin kein "Es funktioniert nicht" vor und "Ich habe gegoggled aber nichts gefunden" oder "Kann das jemand mal machen?" sind so die aussagen, die ich nicht gerne sehen...

            back to topic
            apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

            Kommentar

            Lädt...
            X