我正在尝试从这两个json中获取返回的结果,并将差异进行比较以仅显示唯一值。我尝试了很多其他方法但似乎没有任何效果。这段代码给了我参数#1不是数组......任何帮助我在这里缺少什么?
<?php
$json = file_get_contents("http://ebird.org/ws1.1/data/obs/region/recent?rtype=subnational1&r=US-AZ&back=7&fmt=json");
$json2 = file_get_contents("http://ebird.org/ws1.1/data/obs/region/recent?rtype=subnational1&r=US-NV&back=7&fmt=json");
$array1 = json_decode($json, TRUE);
$array2 = json_decode($json2, TRUE);
$result = array_diff($array1, $array2);
echo $result ;
?>
现在结果是'Array'但我知道存在差异....有没有办法比较返回的json数据中的一个字段...在这个实例中是com-name吗?
答案 0 :(得分:1)
您的变量是字符串(网址)而不是JSON。 你正在尝试json_decode一个网址!
另外,如果我访问网址,我会获得XML ...不是JSON。
答案 1 :(得分:0)
file_get_contents()
从这些网址获取数据。true
作为第二个参数传递给json_decode
才能将结果作为数组获取:
$xml = file_get_contents('http://ebird.org/ws1.1/data/obs/region/recent?rtype=subnational1&r=US-AZ&back=7&format=json');
$xml2 = file_get_contents('http://ebird.org/ws1.1/data/obs/region/recent?rtype=subnational1&r=US-NV&back=7&format=json');
$array1 = json_decode($xml, true);
$array2 = json_decode($xml2, true);
答案 2 :(得分:0)
您所做的实际上是尝试将 URL ADDRESSES 解码为JSON格式,而不是在这些特定网址中找到的内容。 为了JSON解码contnent而不是URL本身,您可以使用以下代码:
$content = file_get_contents($xml); //get the content that is found in the url that $xml holds
$json = json_decode($content); //now json decode the content , and not the url itself
我希望它能帮助你理解你做错了什么。使用file_get_contents()和json_decode()函数是很容易的部分,首先必须规划代码应该实际执行的操作。 祝你好运。
答案 3 :(得分:0)
正如上面的海报所说,你需要实际检索文件。只是调用json_decode只会尝试解码一个JSON字符串,这根本不是你想要实现的。