【发布时间】:2013-09-30 15:22:47
【问题描述】:
我有一个案例,我可以接收两个 json 对象之一,在这种情况下,来自 google geocode api 或 places api。
从地理编码 api 访问值将如下所示:
$coordinates = $data->results[0]->geometry->location;
$cache_value['lat'] = (string) $coordinates->lat;
$cache_value['lng'] = (string) $coordinates->lng;
和几乎相同的地方结构。
$coordinates = $data->result->geometry->location;
$cache_value['lat'] = (string) $coordinates->lat;
$cache_value['lng'] = (string) $coordinates->lng;
在我的代码中,我有两个函数来处理每种情况,但除了 result 和 results[0] 之外,它们几乎相同,我想将它们结合起来。我试图传递一个变量,但它会引发错误:
$result = ($place) ? 'result' : 'results[0]';
$coordinates = $data->$result->geometry->location;
给出以下内容:
通知: Undefined property: stdClass::$result[0]
我想知道正确的语法来实现我所追求的,以及关于命名法的任何指针,因为我担心这个问题的标题有点不准确。
【问题讨论】:
-
'results[0];上缺少的引用是错字吗? -
为什么不只是 $result = ($place) ? $data->result : $data->results[0];然后 $coordinates = $result->geometry->location;
-
@RUJordan,是的,现在已经更正了 - 谢谢
-
@stakolee - 这是一个很好的观点,我会仔细研究那个。
-
@stakolee - 顺便说一句,很好的密西西比州约翰受伤了/那里混为一谈!