2013-04-09 37 views
-1

我試圖從這兩個json中獲取返回的結果,並比較差異以僅顯示唯一值。我嘗試了許多其他方法,但似乎沒有任何工作。此代碼給我參數#1不是一個數組...任何幫助我在這裏失蹤?將json轉換爲數組並比較差異

<?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 ; 

?> 

現在的結果是「數組」但我知道有區別....是有一些方法在返回的JSON數據來比較只是一個領域......在這種情況下COM-的名字嗎?

+0

嚴。你在說json,但你的變量名是$ xml和$ xml2? – 2013-04-09 15:35:49

+0

對不起,一直在用xml嘗試它..我更新了代碼 – 2013-04-09 15:55:35

回答

1

您的變量是字符串(網址)而不是JSON。 你正在嘗試json_decode一個網址!

此外,如果我訪問的網址,我得到的XML ...不是JSON。

+0

我看到我更新了url,所以現在它返回json-&fmt而不是&format。 – 2013-04-09 15:40:04

+0

+1爲捕捉他們實際上並沒有抓住這些數據。我忽略了這一點。 – 2013-04-09 15:42:30

+0

@JonathanCoffey沒有。仍然給XML ...即使如此。你需要獲取URL的內容,並嘗試json_decode,而不是json_decoding自己的URL。嘗試''xml = file_get_contents(「http:// blahblahblah」);''和'$ xml2 = file_get_contents(「http:// blahblahblah」);'一旦你找出正確的網址 – 2013-04-09 15:43:39

0
  1. 您需要使用file_get_contents()從這些URL中獲取數據。
  2. 您需要通過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); 
0

你所做的實際上是試圖將URL地址解碼爲JSON格式,而不是在這些特定的url地址中找到的內容。 爲了JSON解碼contnent,而非網址本身,你可以使用下面的代碼:

$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()函數是很簡單的部分,首先你必須計劃你的代碼實際上應該做什麼。 祝你好運。

0

正如上面的海報所說,您將需要實際檢索文件。只要調用json_decode就會嘗試解碼一個JSON字符串,這完全不是你想要實現的。