我正在寻找直接从对象方法访问数组值的那种。
例如:
使用这种语法,没问题:
$myArray = $myObject->getArray();
print_r($myArray[0])
但是为了减少源代码中的行数,如何直接使用该方法获取元素?
我这样做,但这不正确:
$myArray = $myObject->getArray()[0];
答案 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的其他答案!