我已经从使用这个三元运算切换到 if/elseif/else,但我真的很想知道为什么这不起作用。我不断收到错误:
ErrorException [注意]:未定义的属性: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;
}