2017-03-12 3 views
0

私はAPIにクエリを実行しており、得られる応答も配列を含む多次元オブジェクトオブジェクト(stdClass)です。応答がエラー状態であるか、成功したかどうかを確認する必要があります。応答が成功した場合、TRUEを返す必要があります。応答がエラーの場合は、応答に含まれるエラーメッセージを返す必要があります。成功とエラーのレスポンス形式はまったく異なります。エラーの応答は次のようになります。PHPキーが多次元配列とオブジェクトの組み合わせに存在するかどうかチェックして値を取得する

object(stdClass)#837 (3) { 
    ["errors"]=> array(1) { 
       [0]=> object(stdClass)#838 (2) { 
         ["code"]=>int(324) 
         ["message"]=>string(80) "Duration too long, maximum:30000, actual:37081 (MediaId: snf:840912013693931526)" 
        } 
       } 
    ["httpstatus"]=>int(400) 
    ["rate"]=>NULL 
} 

成功のための応答は次のようになります。私はそれが誤りだった場合は、その後確立するISSETを使用してアレイへの応答を変更しようとしている

object(stdClass)#837 (27) { 
    ["created_at"]=> string(30) "Sun Mar 12 13:41:43 +0000 2017" 
    ["id"]=> int(840920745073102850) 
    ["id_str"]=> string(18) "940920795073102850" 
    ["text"]=> string(32) "The Details Posted Here" 
    ["truncated"]=> bool(false) 
    ["entities"]=> object(stdClass)#838 (5) { 
       ["hashtags"]=> 
    ........ Way More is in the Response but it does not matter... 

$RESPONSEARRAY = (array) $RESPONSE; 
(isset($RESPONSEARRAY["errors"])) { 
$ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]['code']; 
$ERRORMSG_MESSAGE = $RESPONSEARRAY['errors'][0]['message']; 
$ITWASANERROR = $ERRORMSG_CODE.": ".$ERRORMSG_MESSAGE; 
return $ITWASANERROR; 
} else { 
return true; 
} 

しかし、上記の私に次のエラー与えること:

をし、そうしてそのようなエラーの詳細の値を取得する場合
Fatal error: Cannot use object of type stdClass as array 

誰も私がサーバー上で最小限のオーバーヘッドでやりたいことをやり遂げる方法を提案できますか?たぶん、stdClassオブジェクトを配列に変換する必要がないかもしれません。あるいは、それが行われなければならない場合、それは問題ありませんが、動作させるだけです。誰かが助けることができるどんな助けも非常に高く評価されるでしょう。

+2

'if(isset($ object-> errors)){echo $ object-> errors [0] - > message; } ' – RiggsFolly

+0

うわー...それは動作するように簡単です..ありがとう@RiggsFolly –

答えて

1

以下は、配列内のオブジェクトにアクセスする正しい方法です。

$RESPONSEARRAY = (array) $RESPONSE; 
if(isset($RESPONSEARRAY["errors"])) { 
    $ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]->code; 
    $ERRORMSG_MESSAGE = $RESPONSEARRAY['errors'][0]->message; 
    $ITWASANERROR = $ERRORMSG_CODE.": ".$ERRORMSG_MESSAGE; 
    return $ITWASANERROR; 
} else { 
    return true; 
} 
1

$RESPONSEARRAY = (array) $RESPONSE; あなたは結果を得ることができます。

["errors"]=> 
    array(1) { 
    [0]=> 
    object(stdClass)#1 (2) { 
     ["code"]=> 
     int(324) 
     ["message"]=> 
     string(80) "Duration too long, maximum:30000, actual:37081 (MediaId: snf:8 
40912013693931526)" 
    } 
    } 
    ["httpstatus"]=> 
    int(400) 

だから $ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]['code'];$ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]->codeをする必要があります。 など

関連する問題