2015-06-26 2 views
-3

Я хочу поймать Code = 10720 в PHP. Но я не могу. Спасибо.PHP Json array в массиве

{ 
    "OrderId":"6597943", 
    "ExtOrderId":"ExtOrderId0", 
    "MerchantPosId":"KAMPUSHG", 
    "Status":{ 
     "StatusCode":"OPENPAYU_ERROR_VALUE_INVALID", 
     "Code":"10720", 
     "CodeLiteral":"TRANSACTION_INVALID_PARAMS", 
     "Location":"InstallmentPayment", 
     "StatusDesc":["INVALID_CARD_NO","INVALID_CARD_EXPIRATION_DATE","INVALID_CARD_CVV"] 
    } 
} 
+3

'json_decode()' может помочь .. –

ответ

1
$json = '{ 
      "OrderId":"6597943", 
      "ExtOrderId":"ExtOrderId0", 
      "MerchantPosId":"KAMPUSHG", 
      "Status":{ 
       "StatusCode":"OPENPAYU_ERROR_VALUE_INVALID", 
       "Code":"10720", 
       "CodeLiteral":"TRANSACTION_INVALID_PARAMS", 
       "Location":"InstallmentPayment", 
       "StatusDesc":["INVALID_CARD_NO"] 
      } 
     }'; 

$ar = json_decode($json,true); # json-string to array 

# PHP Version < 7 
$code = isset($ar['Status']['Code'])?$ar['Status']['Code']:'default value'; 

# PHP Version >= 7 
$code = isset($ar['Status']['Code'])??'default value'; 
+0

При использовании json_decode вы должны ** заметить ** второй параметр и четвертый параметр: true, чтобы получить формат массива, false get object format:) – PHPJungle

+0

Также обратите внимание на четвертый параметр: если вы хотите получить ** большую строку int **, вам нужно ** JSON_BIGINT_AS_STRING ** @see [по умолчанию - отличать большие числа как float при использовании json_decode] (http : //php.net/manual/en/function.json-decode.php) – PHPJungle

+0

_ «Вы можете быть профессионалом в том, что вы делаете, всегда будет 12-летний китайский ребенок лучше вас ..» _ (шучу) – Alex

0

Использование json_decode()http://php.net/manual/en/function.json-decode.php

$array = '{"OrderId":"6597943","ExtOrderId":"ExtOrderId0","MerchantPosId":"KAMPUSHG","Status":{"StatusCode":"OPENPAYU_ERROR_VALUE_INVALID","Code":"10720","CodeLiteral":"TRANSACTION_INVALID_PARAMS","Location":"InstallmentPayment","StatusDesc":["INVALID_CARD_NO","INVALID_CARD_EXPIRATION_DATE","INVALID_CARD_CVV"]}}'; 


$decode = json_decode($array); 
echo $decode->Status->Code; // Output 10720 

И если вы хотите массив вместо объекта

$decode = json_decode($array, true); 
echo $decode['Status']['Code']; // Output 10720