Как получить объект из массива, когда массив возвращается функцией? - PullRequest
1 голос
/ 09 июня 2009

как я могу получить объект из массива, когда этот массив возвращается функцией?

class Item {
    private $contents = array('id' => 1);

    public function getContents() {
        return $contents;
    }
}

$i = new Item();
$id = $i->getContents()['id']; // This is not valid?

//I know this is possible, but I was looking for a 1 line method..
$contents = $i->getContents();
$id = $contents['id'];

Ответы [ 3 ]

4 голосов
/ 09 июня 2009

Вы должны использовать 2-строчную версию. Если у вас нет веских причин для сжатия кода, нет никакой причины , а не , чтобы иметь это промежуточное значение.

Тем не менее, вы можете попробовать что-то вроде

$id = array_pop($i->getContents())
3 голосов
/ 09 июня 2009

Храните его в две строки - если вам снова понадобится доступ к массиву, он будет у вас там. В противном случае вы будете вызывать вашу функцию снова, что в конечном итоге будет еще хуже.

0 голосов
/ 12 февраля 2014

Я знаю, что это старый вопрос, но мое однострочное решение для этого будет:

PHP> = 5,4

Ваше решение должно работать с PHP> = 5.4

$id = $i->getContents()['id'];

PHP <5.4 </strong>:

class Item
{
    private $arrContents = array('id' => 1);

    public function getContents()
    {
        return $this->arrContents;
    }

    public function getContent($strKey)
    {
        if (false === array_key_exists($strKey, $this->arrContents)) {
            return null; // maybe throw an exception?
        }

        return $this->arrContents[$strKey];
    }
}

$objItem = new Item();
$intId   = $objItem->getContent('id');

Просто напишите метод, чтобы получить значение по ключу.

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...