2013-05-22 45 views
2

我有一個關於選擇JSON對象的部分並檢查它們是否有值的問題。
我從API加載JSON在PHP中:選擇JSON的一部分並檢查值是否爲空

$json_url ='http://api.url.com/api/gateway/call/1.4/getApp?appid=2631'; 
$ch = curl_init($json_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$str = curl_exec($ch); 
curl_close($ch); 
$data = json_decode($str); 

數據的輸出是:

object(stdClass)[1] 
     public 'app' => 
     array 
      0 => 
      object(stdClass)[2] 
       public 'id' => string '2631' (length=4) 
       public 'apptypeid' => string '3' (length=1) 
       public 'organizerid' => string '913' (length=3) 
       public 'accountId' => string '687' (length=3) 
       public 'name' => string 'Meet in Liege' (length=13) 
       public 'info' => string '' (length=0) 
       public 'submit_description' => string '' (length=0) 
       public 'category' => string '' (length=0) 
       public 'app_icon' => string 'upload/appimages/2631/icon1024.png' (length=34) 
       public 'homescreen' => string '' (length=0) 
       public 'token' => string 'e6615c94a8b0fed28cdbec611669b19b' (length=32) 
       public 'certificate' => string 'app2631' (length=7) 
       public 'subdomain' => string 'mil13' (length=5) 
       public 'cname' => string '' (length=0) 
       public 'advancedFilter' => string '0' (length=1) 
       public 'status' => string 'inactive' (length=8) 
       public 'isdeleted' => string '0' (length=1) 
       public 'creation' => string '2013-03-19 14:20:44' (length=19) 
       public 'defaultlanguage' => string 'fr' (length=2) 
       public 'visibleintapcrowd' => string '0' (length=1) 
       public 'applestoreid' => string '0' (length=1) 
       public 'address' => string '' (length=0) 
       public 'lat' => string '0' (length=1) 
       public 'lon' => string '0' (length=1) 
       public 'telephone' => string '' (length=0) 
       public 'email' => string '' (length=0) 
       public 'website' => string '' (length=0) 
       public 'contentmodule_css_phone' => string '' (length=0) 
       public 'contentmodule_css_tablet' => string '' (length=0) 
       public 'searchterms' => string '' (length=0) 
       public 'fbid' => string '563672167017349' (length=15) 
       public 'dropdb' => string '0000-00-00 00:00:00' (length=19) 
       public 'bundle' => string 'com.tapcrowd.meetinliege2631' (length=28) 
       public 'blankurl' => string '' (length=0) 
       public 'header_html_phones' => string '' (length=0) 
       public 'header_html_tablets' => string '' (length=0) 
       public 'footer_html_phones' => string '' (length=0) 
       public 'footer_html_tablets' => string '' (length=0) 
       public 'themeid' => string '41' (length=2) 
       public 'timestamp' => string '1368548676' (length=10) 
       public 'subflavorid' => string '12' (length=2) 
       public 'subflavortype' => string '3' (length=1) 
       public 'subflavorpaidtype' => string '9999' (length=4) 
       public 'show_external_ids_in_cms' => string '0' (length=1) 
       public 'launcherview' => string '' (length=0) 
       public 'responsive' => string '1' (length=1) 
       public 'apptype' => string 'Event Flavor' (length=12) 
       public 'channel' => string '1' (length=1) 
       public 'aboutbuttonkey' => string 'About TapCrowd' (length=14) 
       public 'aboutbuttonurl' => string 'http://m.tap.cr/about' (length=21) 
     public 'appversion' => string '' (length=0) 
     public 'events' => 
     array 
      0 => 
      object(stdClass)[3] 
       public 'id' => string '5004' (length=4) 
       ....... 

現在我想檢查是否例如 '信息', 'app_icon',「地址'和'電子郵件'的應用程序數組是空的或不是。
有誰知道我該怎麼做?這是可能的JSON查詢?我想在JavaScript中做我的操作!

回答

5

你有沒有嘗試過這樣的:

if(empty($data->app[0]->info)){ 
    // info empty 
} 
if(empty($data->app[0]->app_icon)){ 
    // app_icon empty 
} 
if(empty($data->app[0]->address)){ 
    // address empty 
} 
if(empty($data->app[0]->email)){ 
    // email empty 
} 

如果你傳遞的JSON的JavaScript,然後使用(假設JSON是分配給一個變量所謂data):

if(data.app[0].info.length === 0){ 
    // info empty 
} 

然後重複別人通過更換info與您要檢查的名稱。

+0

你知道我該如何在js中做到這一點嗎? – nielsv

+1

將json傳遞給正確的頭文件等,然後使用:if(data.app [0] .info.length === 0){/ * empty * /}' – Joe

0

你不能只是做:

if(trim($data->app[0]->info)=='' || is_null($data->app[0]->info)){ 
    echo "info empty"; 
} 

if(trim($data->app[0]->app_icon)=='' || is_null($data->app[0]->app_icon)){ 
    echo "app_icon empty"; 
} 

if(trim($data->app[0]->address)=='' || is_null($data->app[0]->address)){ 
    echo "address empty"; 
} 

if(trim($data->app[0]->email)=='' || is_null($data->app[0]->email)){ 
    echo "email empty"; 
} 
+0

這不會工作,因爲'$ data'是一個對象,並且您將它用作數組。 – Joe

1

json_decode返回一個普通的PHP對象,所以它應該很容易。如果我沒有記錯的話,鑑於你$data對象的結構,這將做到這一點:

// Retrieve the app object from $data 
$app = $data->app[0]; 

// Check whatever you want with the object elements 
if empty($app->info) "info empty\n"; 
if empty($app->app_icon) "app_icon empty\n"; 
if empty($app->address) "address empty\n"; 
if empty($app->email) "email empty\n"; 

的情況下有數組中,你可能會考慮使用foreach來處理它們更app參賽對象。