この 3 項演算の使用から if/elseif/else に切り替えましたが、これが機能しない理由を知りたいです。エラーが発生し続けます:
ErrorException [通知]: 未定義のプロパティ: stdClass::$error
ピースが 3 番目になるように条件の順序を変更すると$res->response
、同じエラーが発生しますが、代わりにそのプロパティに対して発生します。私には意味がなく、Codepad.org (PHP 5.2 を使用) でテストすると、期待どおりに動作します: http://codepad.org/gwteijIe
問題のテストコードは次のとおりです。
$output = '{"error":{"message":"This is a test error"}}';
$res = json_decode($output);
$error = isset($res->response) ? $res->response->message :
isset($res->error) ? $res->error :
isset($res->error->message) ? $res->error->message :
$output;
echo $error;
(これが$res->error
andをチェックする理由$res->error->message
は、使用している API が、チェックしている 3 つの条件のいずれかを返すためです。免責事項: これは私の API ではありません!)
期待した結果が得られない理由についての洞察はありますか? 助けてくれてありがとう。
編集:
明確にするために、これは私が達成しようとしていることです:
if (isset($res->response))
{
$error = $res->response->message;
}
elseif (isset($res->error->message))
{
$error = $res->error->message;
}
elseif (isset($res->error))
{
$error = $res->error;
}