我已经从使用这个三元操作切换到if/elseif/else,但是我真的很想知道为什么这样不起作用。我不断收到错误:返回“未定义属性”的三元操作
ErrorException [ Notice ]: Undefined property: stdClass::$error
如果我切换条件的顺序,使$res->response
件是3,然后我得到了同样的错误,但该属性。这是没有意义的我,和测试它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
和$res->error->message
是因为我们使用的API将返回我们正在检查免责声明这三个条件中的任何一个:这不是我的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;
}
哪个版本的PHP是这样运行的? – 2013-03-03 06:02:45
对不起,但我无法帮助downvoting嵌套三元。 – 2013-03-03 06:02:48
这不是一个嵌套的三元组。 – DondeEstaMiCulo 2013-03-03 06:05:46