如何确定json_decode是否包含php中的深层值

时间:2013-10-28 16:00:10

标签: php json

我一直在搜索,但找不到完全相同的内容。虽然操作系统上有很多相关的问题,但它们并没有告诉我我到底在想什么。

我是一名编程员,而不是一个php编码器,所以我只是伪装我的方式,因为我的PHP人员不可用。我有一个服务器软件,用于检查来自苹果的应用内购买收据,并对结果做了一些事情,包括将它们放在我服务器数据库的表格中。

$endpoint="https://sandbox.itunes.apple.com/verifyReceipt";
$response=$objDB->verifyreceiptProcess($endpoint,$postData);
// parse the response data
$data1 = json_decode($response);  //  Response of sandbox

if( $data1->status == 0){  //  Sandbox Status =0
   $insertPurchase[0]["Field"]="user_id";
   $insertPurchase[0]["Value"]=$params['user_id'];
   $insertPurchase[1]["Field"]="product_id";
   $insertPurchase[1]["Value"]=$data1->receipt->product_id;
   $insertPurchase[2]["Field"]="receiptData";
   $insertPurchase[2]["Value"]=substr($params['receipt'],0,50);
   $insertPurchase[3]["Field"]="game_title";
   $insertPurchase[3]["Value"]=$params['game_id'];
   $insertPurchase[4]["Field"]="date_of_purchasing";
   $insertPurchase[4]["Value"]=$data1->receipt->purchase_date;
   $insertPurchase[5]["Field"]="apple_transaction_id";
   $insertPurchase[5]["Value"]=$data1->receipt->transaction_id; 
   $insertPurchase[6]["Field"]="app_item_id";
   $insertPurchase[6]["Value"]=$data1->receipt->app_item_id;
   ....

然后它将query_inserts插入到我的表中以记录购买,并将信息返回给我的应用程序。

问题是,现在 app_item_id 字段不存在。我的猜测是,在提交应用程序之前,不会返回此字段。这导致我的服务器软件只返回“false”。如果我从safari调用api,则打印“false”一词而不是格式化的json结果。

所以我需要错误检查最后一行,以确保该字段存在,然后将其粘贴在$ insertPurchase [6] [“Value”]中,如果没有放在那里。

我假设可以使用isset,但是不明白如何使用它来检测json结果中的这些内容。

很抱歉,如果这个问题太基础了。

1 个答案:

答案 0 :(得分:1)

这应该有效:

if(isset($data1->receipt->app_item_id))
{
    $insertPurchase[6]["Value"]=$data1->receipt->app_item_id;
} else {
     $insertPurchase[6]["Value"]="";
}