使用PHP访问特定的JSON对象值

时间:2020-06-28 14:54:51

标签: php json

我正在尝试从JSON字符串访问特定值。也许是由于我缺乏对JSON结构以及如何访问的了解。请帮忙。我正在尝试访问“ MerchantRequestID”和“ PhoneNumber”的值

我尝试按照以下方法获取MerchantRequestID并获取错误。另外,如果没有已知的结构,是否可以不使用循环直接访问特定元素的值?

$JSON_String = '{"Body":{"stkCallback":{"MerchantRequestID":"23226-16663390-1","CheckoutRequestID":"28062020192185","ResultCode":0,"ResultDesc":"It worked.","CallbackMetadata":{"Item":[{"Name":"Amount","Value":5.00},{"Name":"ReceiptNumber","Value":"XX223344"},{"Name":"Balance"},{"Name":"TransactionDate","Value":20200628142747},{"Name":"PhoneNumber","Value":12345678}]}}}}';

echo $JSON_String;
$jsonInput = json_decode($JSON_String, true);

foreach($jsonInput['Body'] as $body){
  foreach($body['stkCallback'] as $callBack){
   echo $callBack['MerchantRequestID'];
  }
}     

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码直接获取关键数据,而无需循环。

$jsonInput = json_decode($JSON_String, true);

    $MerchantRequestID = $jsonInput['Body']['stkCallback']['MerchantRequestID'];
    $phoneNumber = $jsonInput['Body']['stkCallback']['CallbackMetadata']['Item'][4]['Value'];

谢谢。

答案 1 :(得分:1)

使用以下代码进行循环

foreach ($jsonInput as $key => $value){
   echo $value['stkCallback']['MerchantRequestID'];
   echo "<br>";
   echo $value['stkCallback']['CallbackMetadata']['Item'][4]['Value'];
}
相关问题