如何访问对象中的第一个数组

时间:2015-06-05 09:39:06

标签: php arrays object deprecated

我目前正在使用PDO和类来返回数据库查询的结果。当我取回结果时,它们会在一个对象中返回,该对象包含我可以访问的字段和值数组(如下所示)。

Array ( [0] => stdClass Object 
    ( [id] => 30 [added] => 27/05/2015 14:49:23 [addedBy] => 1 [title] => Peanut Butter Jelly Time! [category] => 6 [date_time] => 17/06/2015 [date_time_unix] => 1434495600 [venue] => 4 [duration_start] => 07:40 [duration_end] => 08:05 [tutor] => 1 [text] => Description [outline] => [book_by] => 11/06/2015 [book_by_unix] => 1433977200 ) 
)

我有一个允许我从查询中访问第一行结果的函数,如下所示:

// Return First results only
public function first(){
    return $this->results()[0];
}

这在我的一个运行PHP 5.4+版本的服务器上工作正常。但是,我有一台运行PHP版本5.3.18的服务器(目前无法升级)。作为数组声明' []'在PHP 5.4+版本中引入,它不能在运行5.3.18版本的服务器上运行。是否有一个已弃用的功能,我可以将其用作替换方括号的临时措施?我已经在网上搜索了一段时间,并且找不到任何有用的东西。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

问题实际上并非[]数组声明,这是array()的简称,并且不会出现在您显示的代码中。

然而,在PHP 5.4中也引入了直接从返回数组的函数调用访问数组元素的可能性。这就是你在$this->results()[0];中所做的事情。

如果您改为使用临时变量来存储函数调用的结果,则可以在下一行返回该元素。像这样:

public function first(){
    $results = $this->results();
    return $results[0];
}