I need to find if a string exists in JSON Kraken.com retrieved file:
I get it this way:
$sURL = "https://api.kraken.com/0/public/OHLC?pair=ETHAED&interval=5&since=". strtotime("-1 day");
$ch = curl_init();
$config['useragent'] = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';
curl_setopt($ch, CURLOPT_USERAGENT, $config['useragent']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $sURL);
$result = curl_exec($ch);
curl_close($ch);
$obj = json_decode($result, true);
Sometimes pairs names differ from URL string and JSON (i.e. I can write LTCEUR but in JSON I see LTCZEUR
So I need to check if the string does exists in the $obj
$sName = "ETHAED";
print_r($obj);
if (in_array($sName,$obj)){
echo("Found ".$sName."<br>");
}else{
echo("NOT FOUND"."<br>");
}
but this doesn’t work.
if I do a print_r() I can clearly see the pair name, but can’t verify it.
Any suggestion?
Kraken.com JSON is not standard so I can’t easily retrieve the name of the PAIR, I tried all possible combinations of $obj["result"][$sName] but without result.
Example:
https://api.kraken.com/0/public/OHLC?pair=LTCUSD
Here pair is LTCUSD
But on Json:
{"error":[],"result":{"XLTCZUSD":[[1669197540,"78.74","78.74","78.58","78.59","78.59","23.82168114",8]
2
Answers
Yes it works perfectly. Just a little correction on format:
Something is wrong with your comparison.
Should be:
Caveat: Read that carefully; it’s now
is
instead ofin
.Or, if you don’t care if it’s
null
, a string, or non-array:Detailed explanation
in_array($sName,$obj)
is checking if$sName
matches (==
equality) any of the elements in the first level of your array.Since the first level of the array looks like this (pseudocode here):
Since
'ETHAED'
is neither[]
nor is it[XLTCZUSD => [...],last: 123456]
it doesn’t match anything.