2017-07-14 2 views
-1

Ich habe ein RSS-Objekt $rssObject erstellt mit der PHP simplexml_load_file Funktion, das Ziel ist es, den Wert [href] zu erhalten.Zugriff auf mehrdimensionale Array-Objekt erstellt mit Simplexml_load_file in PHP gibt null zurück?

var_dump($rssObject) gibt die folgende:

Array 
(
    [0] => SimpleXMLElement Object 
     (
      [link] => Array 
       (
        [0] => SimpleXMLElement Object 
         (
          [@attributes] => Array 
           (
            [href] => https://www.example.com 
           ) 

         ) 

Ich habe erfolglos versucht, den Inhalt [href] mit dieser Notation zu erhalten, die null

$rssObject[0]->link[0]->{'@attributes'}['href']; 

Nicht sicher gibt, warum? Jede Hilfe wäre willkommen!

+0

Warum wurde dies abgelehnt? Bitte siehe Antwort, diese Frage wurde gerechtfertigt, wenn der var_dump eine irreführende Ausgabe ausgibt! – Mohammad

+1

Ja, das ist eine sehr häufige Verwirrung, und wir sollten wirklich eine kanonische Antwort haben, die es erklärt. – IMSoP

Antwort

2

In SimpleXML, Attributen zugegriffen wird unter Verwendung von Array-Notation:

$xml = simplexml_load_file(); 
$url = $xml[0]->link[0]['href']; 

Siehe "Example #5 Using attributes" in dem PHP-Handbuch.

+0

Hallo, kannst du erklären, warum ich [@attributes] nicht als Schlüssel benutzen muss? – Mohammad

+1

Die 'var_dump'-Darstellung, die Sie sehen, ist .. eine Lüge. SimpleXML zaubert etwas, und Sie müssen sich an seine Regeln halten. – cweiske

+0

Das ist interessant, danke das hat funktioniert. – Mohammad