2012-07-05 191 views
0

我要找的那种在一个数组的值直接从该对象的方法来访问。需要帮助的语法

例如:

有了这个语法,没有问题:

$myArray = $myObject->getArray(); 

print_r($myArray[0]) 

但是,以减少源代码行数,如何与方法直接获得的元素?

我这样做,但它不是正确的:

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

为什么要减少源代码中的行数? –

+0

只是为了知道它是否可以这样做 – bahamut100

回答

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

以下是仅适用于PHP 5.4和所谓高。

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

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

@deceze's answer一个很好的选择。

0

它是IMPOSSIBRRUUU。

认真的回答: 可惜这是不可能的。你可以写一个非常难看的包装是这样的:

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

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

但是,这使得少可读的代码。

阅读关于PHP 5.4终于等解答!

+0

感谢但有效的源代码不易读 – bahamut100

2

对于PHP 5.3-:

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

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

但是,以减少源代码行数,如何直接与方法得到的元素?

虽然可能与你已经证明,我要问的语法在PHP 5.4实现这一点,为什么你想呢?有一些方法可以在5.3中以单线形式进行,但我认为没有必要这样做。线的数量肯定比代码的可读性不那么有趣?

+0

你是对的,但它只是为了我自己的文化(并且为了增加我对OOP的理解) – bahamut100

+0

@ bahamut100有没有在OO中规定一切应该在一行上。 –