• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Reuters API XML Array

maria1

Mitglied
Hallo,

stecke gerade etwas, das Array ist mir etwas zu kompliziert.

Wie lese ich die einzelnen Werte richtig aus?

PHP:
<?php

$url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22YHOO,GOOG%22%29&env=store://datatables.org/alltableswithkeys";
$xml = simplexml_load_file($url);
print_r($xml);

echo "<br />---<br />";

print $xml['results']['quote']['@attributes']['symbol'];
?>

Danke
 
Werbung:
Du machst das doch schon ganz gut.

Wenn du nicht weiter weißt, kannst du mit einer foreach schleife immer noch nachgucken welche variablen du gerade zur verfügung hast.

Beispiel:
PHP:
foreach ($xml as $key => $value) {
    echo $key . '<br />';
}

Ausgabe
Code:
key1
results
irgendetwas
nochwas

Welchen key will ich? "results"! Ok schritt wiederholen.
PHP:
foreach ($xml->results as $key => $value) {
    echo $key . '<br />';
}

Ausgabe
Code:
key
something
bla
foobar
quote

Und so weiter.

Übrigens, wenn du auf die Seite http://de2.php.net/simplexml_load_file guckst wirst du sehen, dass du ein Object zurück bekommst und kein Array. Also müsstest du eher $xml->results schreibel als $xml['results'].

lg
 
Danke, sehr nett von dir, verstehe schon .

Hab das versucht in JSON umzusetzen, klappt aber nicht ganz.

PHP:
$quote2 = json_decode($quote2);

Ausgabe: http://pastebin.com/vnSEcS7H

PHP:
    foreach ($quote2 as $key => $value) {
        print_r($key) . '<br />';
    }

Ausgabe: query

Wiso?

Danke, echt nett von dir und noch dazu so schnell :)
 
Werbung:
Weil es in $quote2 einen wert namens "query" gibt. Jetzt schreibe in der Schleife anstadt $quote2 einfach mal $quote2->query und gucke was sich dan ändert. ;)
 
Hallo, ich nochmals...

Bekomme es leider nicht hin.

PHP:
    $quote2 = json_decode($quote2);

    foreach ($quote2->query as $key => $value) {
        print_r($key) . '<br />';
            foreach ($key->results as $keya => $valuea) {
                print_r($keya) . '<br />';
            }
    }

Ausgabe: countcreatedlangresults (= $key)

$keya ist leer.

Verstehe ich da was falsch?

Danke & Grüße
 
$query2 ist bei dir ein Objekt. Dieses enthält einen oder mehrere Werte welche einen Namen haben und deren Inhalt wiederrum von einem speziellem Typen ist.

$query2 enthält als erstes einen Wert mit dem Namen "query". Der Inhalt dieses Wertes ist wieder ein Objekt.

Um auf den Wert namens "query" zugreifen zu können schreiben wir folgenden Ausdruck.

PHP:
$query2->query

Das Objekt Query enthält nun mehrere Werte mit unterschiedlichen Namen. Unter anderem einen Wert mit dem Namen "result". Dieser Wert enthält wiederrum ein Objekt.
Da wir nun auf den Wert "result" innerhalb des Objektes "query" zugreifen wollen müssen wir folgenden ausdruck schreiben.

PHP:
$query2->query->result

Und so weiter.

Später werden die Werte nicht mehr unbedingt vom Typ Object sein und können auch Datentypen wie z.b. INT, SRTING oder ähnlichen bestehen.
 
Werbung:
Zurück
Oben