需要语法帮助

时间:2012-07-05 08:14:31

标签: php object syntax

我正在寻找直接从对象方法访问数组值的那种。

例如:

使用这种语法,没问题:

$myArray = $myObject->getArray();

print_r($myArray[0])

但是为了减少源代码中的行数,如何直接使用该方法获取元素?

我这样做,但这不正确:

$myArray = $myObject->getArray()[0];

5 个答案:

答案 0 :(得分:3)

以下内容仅适用于PHP 5.4,可能更高。

$myArray = $myObject->getArray()[0];

不幸的是,在PHP 5.4之下没有更快的方法。

请参阅@deceze's answer以获得更好的替代方案。

答案 1 :(得分:2)

对于PHP 5.3 - :

$myArray = current($myObject->getArray());

list($myArray) = $myObject->getArray();

答案 2 :(得分:1)

如果您使用的是php 5.4(支持数组解除引用),您可以执行第二个选项:

$myArray = $myObject->getArray()[0];

如果您使用的是PHP< 5.4你可以在类中“修复”它(对象是一个实例):

class Foo
{
    public function getArray()
    {
        return $this->theArray;
    }

    public function getFirstItem()
    {  
         return $this->theArray[0];
    }
}

$myObject = new Foo();
print_r($myObject->getFirstItem());

答案 3 :(得分:1)

  

但是为了减少源代码中的行数,如何直接使用该方法获取元素?

虽然 可以在PHP 5.4中使用您演示的语法实现这一点,但我不得不问,你为什么要这样做?有一种方法可以在5.3中以单行方式进行,但我认为不需要这样做。线条的数量肯定不如代码的可读性那么有趣?

答案 4 :(得分:0)

这是IMPOSSIBRRUUU。

认真回答: 遗憾的是,这是不可能的。你可以写一个非常难看的包装器:

function getValue($arr, $index)
{
    return $arr[$index];
}

$myArray = getValue($myObject->getArray(), 0);

但这使得代码的可读性降低。

阅读有关php 5.4的其他答案!