Array Werte auslesen - Problem

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

loddarmattheus

Erfahrenes Mitglied
Hi Leute,
kann mir bitte jemand mal kurz einen Tipp geben?

Ich lese eine API aus mit

PHP:
$array = json_decode($CallDepth, true);

var_dump($array);

Ausgabe lautet:


Code:
array(3)
    {
    ["lastUpdateId"]=> int(1457713840)
    ["bids"]=> array(5)
        {
        [0]=> array(2)
            {
            [0]=> string(11) "50.15000000"
            [1]=> string(10) "0.00476000"
            }
        [1]=> array(2)
            {
            [0]=> string(11) "50.14000000"
            [1]=> string(11) "15.62491000"
            }
        [2]=> array(2)
            {
            [0]=> string(11) "50.13000000"
            [1]=> string(12) "111.45432000"
            }
        }
    ["asks"]=> array(5)
        {
        [0]=> array(2)
            {
            [0]=> string(11) "50.16000000"
            [1]=> string(12) "309.47692000"
            }
        [1]=> array(2)
            {
            [0]=> string(11) "50.17000000"
            [1]=> string(12) "160.17202000"
            }
        [2]=> array(2)
            {
            [0]=> string(11) "50.18000000"
            [1]=> string(12) "639.01232000"
            }
        }
    }

Frage: Wie kann ich einer foreach Schleife alle "bids" und "asks" wiedergeben? Bei foreach($array as $row) schmeisst mir PHP nur Fehler
 
Es gibt kein $row[0] da dieses als ass. Array aufgebaut ist. Versuche $row['bids'] und analog für asks. Das ist aber nur der erste Schritt, weil dein Array mehrfach verschachtelt ist.
Und poste das Array auch mal als JSON, d. h. den Text, der vor dem json_decode vom Server kommt. Zumindest ich kann das viel besser lesen und man kann damit einfach einen Testcode erstellen.
 
PS: Da habe ich mich ein wenig versehen: $array selber ist schon ein ass. Array, wenn Du darüber mit foreach iterierst, bekommst Du lastUpdateId, bids und asks. D. h. Du musst über $array[bids] und $array['asks'] iterieren.
(Wie geschrieben: Ich kann JSON besser lesen :) ).
 
Vielleicht hilft diese Darstellung des Array mehr:
PHP:
<?php
$data = array( "lastUpdateId" => 1457713840,
               "bids" => array(array("50.15000000", "0.00476000"), array("50.14000000", "15.62491000"), array("50.13000000", "111.45432000")),
               "asks" => array(array("50.16000000", "309.47692000"), array("50.17000000", "160.17202000"), array("50.18000000", "639.01232000"))
              );
echo "<pre>";
var_dump($data);
echo "</pre>";
?>
 
PHP:
foreach($array['bids'] as $row )
echo $row['0']. " ".$row['1']. "<br />";
gibt mir zwar das Richtige aus, aber es fehlen halt die ask-Daten in der gleichen Zeile:

Code:
49.98000000 77.50134000
49.97000000 23.43193000
49.96000000 136.63861000
49.95000000 46.46520000
49.94000000 45.15170000
 
Das kannst Du lösen, indem Du eine for-Schleife mit Index verwendest, dann kannst Du parallel sowohl auf bids und auf asks zugreifen. Vermutlich wird das Array ja maschinell erstellt, so dass man davon ausgehen kann, dass beide genau parallel aufgebaut sind.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück