2017-12-12 1 views
-1

Ich versuche, einen Trading-Bot zu erstellen und an diesem Punkt sollte ich den aktuellen Marktwert für einen Kryptowährungsmarkt erhalten.PHP: Holen Sie sich ein Element aus komplexen JSON-Objekt

An dieser Stelle mag Ich mag die verschachtelten Parameter „Last“ in diesem JSON-Array erhalten:

array(3) { ["success"]=> bool(true) 
      ["message"]=> string(0) "" 
      ["result"]=> array(1) { 
        [0]=> array(13) { ["MarketName"]=> string(8) "USDT-BTC" 
            ["High"]=> float(17399.99999999) 
            ["Low"]=> float(16166) 
            ["Volume"]=> float(7200.55684465)      
            ["Last"]=> float(16486.5864853) 
            ["BaseVolume"]=> float(119420929.2692) 
            ["TimeStamp"]=> string(21) "2017-12-12T20:36:19.2"       ["Bid"]=> float(16484) 
            ["Ask"]=> float(16486.5864853)      
            ["OpenBuyOrders"]=> int(12858) 
            ["OpenSellOrders"]=> int(5529) 
            ["PrevDay"]=> float(17369.85623056) 
            ["Created"]=> string(23) "2015-12-11T06:31:40.633" 
            } 
           } 
      } 

Wie kann ich es bekommen und es an?

Dies ist das Skript, wo ich erhalten und dekodieren das Array

private function send($method = null , $args = array() , $secure = true) { 
    if(empty($method)) return array("status" => false , "error" => "method was not defined!"); 

    if($secure) $args["apikey"] = $this->apiKey; 
    $args["nonce"] = time(); 

    $urlParams = array(); 
    foreach($args as $key => $val) { 
    $urlParams[] = $key . "=" . $val; 
    } 

    $uri = $this->baseUrl . $method; 

    $argsString = join("&" , $urlParams); 
    if(!empty($urlParams)) { 
     $uri = $uri . "?" . $argsString; 
    } 

    $sign = $secure == true ? hash_hmac('sha512',$uri,$this->apiSecret) : null; 

    $uri = trim(preg_replace('/\s+/', '', $uri)); 
    $ch = curl_init($uri); 
    if($secure) curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign)); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $execResult = curl_exec($ch); 

    if(curl_error($ch)) 
    { 
     return array("status" => false , "error" => curl_error($ch)); 
    } 

    $obj = json_decode($execResult, true); 
    return $obj["result"]; 

ich in die Anzeige der Parameter gelungen [ „Ergebnis“]: wie kann ich etwas zeigen im Inneren verschachtelt? Vielen Dank im Voraus.

+1

'$ obj [" Ergebnis "] [0] ['Last']'? – kerbholz

Antwort

2

ähnlich wie Sie das ‚Ergebnis‘ Element der ursprünglichen Anordnung zugegriffen wird, können Sie das ‚letzte‘ Element in der verschachtelten Array zugreifen wie dies:

$obj['result'][0]['Last']; 

Sie zuerst bei $ obj [ 'Ergebnis'] suchen, die ein Array und dann Zugriff auf das Element 0, das auch ein Array ist. Sie greifen dann auf den Schlüssel "last" in diesem Array zu.

+1

Kleiner Hinweis: Es ist "Last" in OP-Code. – kerbholz

+0

Vielen Dank, ich habe die [0] nicht berücksichtigt und das hat mich verwirrt. –

-1

Sie könnten testen, ob $ obj ["result"] ein Array ist, dann iterieren und weiter bohren, bis Sie das gewünschte Objekt gefunden haben.

if(is_array($obj["result"])) { 
    foreach($obj["result"] as $key => $thing) { 
      // do something with the $thing 
      // or do a 'defined()' check to see if the key(s) 
      // inside the object are there. 
      if(isset($thing["Last"])) { 
       // do something fancy with your new found info.. 
      } 
    } 
} 

oder einfach nur versuchen, es zu adressieren direkt

$obj["result"][0]["Last"] 
Verwandte Themen