此问题在此处已有答案:
Multidimensional array: check if key exists(3个答案)
2天前关闭。
我需要找到一个字符串是否存在于JSON Kraken.com检索文件:我是这样理解的:
$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);
有时,对名称与URL字符串和JSON不同(例如,我可以写LTCEUR,但在JSON中我看到LTCZEUR
所以我需要检查字符串**是否存在于$obj
中
$sName = "ETHAED";
print_r($obj);
if (in_array($sName,$obj)){
echo("Found ".$sName."<br>");
}else{
echo("NOT FOUND"."<br>");
}
但这没用。
如果我执行print_r(),我可以清楚地看到对的名称,但是不能验证它。有什么建议吗?
Kraken.com JSON不是标准的,所以我无法轻松检索PAIR的名称,我尝试了$obj[“result”][$sName]的所有可能组合,但没有结果。
示例:https://api.kraken.com/0/public/OHLC?pair=LTCUSD此处的货币对为LTCUSD
但关于Json:{"error":[],"result":{"XLTCZUSD":[[1669197540,"78.74","78.74","78.58","78.59","78.59","23.82168114",8]
2条答案
按热度按时间q9yhzks01#
你的比较有问题。
应道:
**警告:**请仔细阅读;现在是
is
而不是in
。或者,如果你不在乎它是
null
、字符串还是非数组:详细说明
in_array($sName,$obj)
正在检查$sName
是否与数组第一级中的任何元素匹配(==
相等)。由于数组的第一层如下所示(此处为伪代码):
由于
'ETHAED'
既不是[]
,也不是[XLTCZUSD => [...],last: 123456]
,因此它不匹配任何内容。68bkxrlz2#
是的,它工作得很完美。只是在格式上做了一点修正: