我需要找到JSON检索到的文件中是否存在字符串:我是这样得到的:
$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是不标准的,所以我无法轻松地检索这对的名称,我尝试了所有可能的组合$obj“结果”,但没有结果。
示例: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]
发布于 2022-11-23 22:33:18
你的比较有点不对劲。
in_array($sName,$obj)应:
is_array($obj['result'][$sName] ?? null)警告:仔细阅读;现在是is而不是in。
或者,如果您不关心它是null、字符串还是非数组:
array_key_exists($obj['result'], $sName)详细解释
in_array($sName,$obj)正在检查$sName是否匹配(==相等)数组第一级中的任何元素。
由于数组的第一级如下所示(这里是伪代码):
error => []
result => [
XLTCZUSD => [...]
last: 123456
]因为'ETHAED'既不是[],也不是[XLTCZUSD => [...],last: 123456],所以它与任何东西都不匹配。
发布于 2022-11-23 23:02:59
是的,它工作得很好。只是对格式做了一点小小的修正:
if (array_key_exists($sName, $obj['result'])){
echo("FOUND ".$sName."<br>");
}else{
echo("ERROR ".$sName."<br>");
}https://stackoverflow.com/questions/74553533
复制相似问题