Проверьте, является ли $data->message
массивом или строкой, а затем либо выполните foreach
, либо просто установите сообщение об ошибке напрямую.Было бы лучше иметь ошибки в обязательных полях в виде простого массива строк, приблизить формат объекта к сообщению об отклоненной транзакции, если вы контролируете, как генерируется этот JSON ...
т.е. -
{ "result": "ERROR", "message": { "address is a required field", "city is a required field", "state is a required field" } }
И
{ "result": "ERROR", "message": { "Transaction Declined: .... " }
}
<?php
$json1='{ "result": "ERROR", "message": "Transaction Declined: Invalid Card Number" }';
$json2='{ "result": "ERROR", "message": { "address": "is a required field", "city": "is a required field", "state": "is a required field" } }';
$obj=json_decode($json2);
if(is_object($obj->message)){
foreach($obj->message as $k=>$v){
$msg['error'][]="The field $k is a required field <br />";
}
}else{
$msg['error'][]=$obj->message;
}
print_r($msg);
?>