2014-06-05 58 views
1

我想創建一個Wordpress插件,將拉入JSON文件和(使用循環)爲JSON文件中的每個對象創建一個元素。但是,這個特定的JSON文件是以我沒有看到的方式格式化的,因此我很難弄清楚如何提取數據。文件的開始和結尾用數組括號標記。基本json_decode與PHP

這是JSON file

所以第一個對象是這樣的:

[{ 
    "title": "Moderate earthquake - Fiji Region on June 5, 2014", 
    "magnitude": "4.5", 
    "location": "FIJI REGION", 
    "depth": "334", 
    "latitude": "-15.63", 
    "longitude": "-176.92", 
    "date_time": "2014-06-05T04:17:31+00:00", 
    "link": "http://earthquake-report.com/2014/06/05/moderate-earthquake-fiji-region-on-june-5-2014/" 
}, 

所以我有這樣的:

$json_feed_url = 'http://earthquake-report.com/feeds/recent-eq?json'; 
$args = array('timeout' => 120); 
$json_feed = wp_remote_get($json_feed_url, $args); 
$earthquake_data = json_decode($json_feed); 

我怎麼竟在拉這一點,並打印出來,雖然?我不能只使用$ earthquake_data-> title,並且我需要一種能夠使用索引從每個對象中拉取的方法,因爲它們沒有名稱。我是否需要從0開始並從那裏開始?

echo $earthquake_data[0]; 
echo $earthquake_data[0]{$countervariable->title}; 

正如我所說的,我想從本文檔的最後25個對象中提取信息。任何幫助將不勝感激。

+0

'foreach($ earthquake_data as $ earthquake_data_single){echo $ earthquake_data_single-> title; }'。 – h2ooooooo

回答

2
$json_feed_url = 'http://earthquake-report.com/feeds/recent-eq?json'; 
$args = array('timeout' => 120); 
$json_feed = wp_remote_get($json_feed_url, $args); 
$earthquake_data = json_decode($json_feed); 

// $earthquake_data should be an array 
foreach ($earthquake_data as $obj) { 
    var_dump($obj); 
    // example 
    echo $obj->title; 
} 
+0

嗯...當我使用foreach函數,因爲你寫了,我得到這個: 警告:爲foreach()提供了無效的參數。這通常是因爲它實際上不是一個數組,對嗎? 它似乎並沒有被創建爲一個數組。 我創建了一個小測試函數來找出: if(!is_array($ earthquake_data)){ echo'

它不是一個陣列!

'; } 不用說,它打印出「這不是一個數組!」。有任何想法嗎? –

+0

@thomasshellberg它會返回false,因爲'json_decode()'返回一個'object'。如果你想要一個'array',你可以使用'json_decode($ json_feed,true)'(注意第二個參數'true') – Darren

+1

@Darren False。 JSON數組仍然是數組(0,1,2,3 ...鍵)。然而,命名鍵將是對象屬性。 – h2ooooooo

0

我剛下載文件,因爲我不使用WP。

訣竅是使用「json_decode(數據)作爲然後PHP的所有對象轉換爲陣列。只是幾個'foreach'循環將打印它,從中選擇等。

這裏是一些經過測試的示例代碼。

<?php 
$dc = json_decode(file_get_contents('earthquake.json'), true); 

foreach ($dc as $details) { 
    echo '<strong>', $details['title'], '</strong><br />'; 
    foreach($details as $name => $value) { 
     echo $name, ' => ', $value, '<br />'; 
    } 
} 
+0

感謝您的幫助!將該文件作爲.json下載並在本地使用後,這起作用。我也剛剛將'earthquake.json'更改爲供稿網址,並且它也起作用。如果我按照以前的方式使用了wp_remote_get函數,那麼它不起作用。我猜這是整個過程中的問題。再次感謝! –

+0

@thomas,很高興幫助 –