如何返回一个数组并在PHP中的一行中获取它的第一个元素?

时间:2010-11-26 15:56:21

标签: php

这个问题只是为了好玩,也许是学习PHP速记技巧(如果存在的话) 我们假设我有这个代码:

$item = $this->get_item($id);
$item = $this->prepare_items(array($item));
$item = $item[0];

默认情况下,* prepare_items *函数接受一个项目数组并返回它们进行一些修改,所以如果我只想在一个项目上调用它,我应该把它推到一个像上面这样的数组,但是我必须拔出我创建的数组中的项目。

这样有一种简便的方法,例如:

$item = $this->_prepare_items_output(array($item))[0];
// OR
$item = ($item = $this->_prepare_items_output(array($item)))[0];

此外,如果您有一组PHP的提示和技巧的链接,那就太棒了。

4 个答案:

答案 0 :(得分:4)

您可以使用reset($array)重置内部数组位置并返回第一个元素的值

答案 1 :(得分:2)

不,据我所知,在PHP中无法做到这一点。

可以做的是返回具有方法getLine()的类的对象。有了它,你可以做到

$item = $this->prepare_items(array($item))->getLine(0);

你可以 - 我不是说它一定是个好主意,但它变得越来越受欢迎,可能受jQuery优雅的影响 - 也将get_item的结果存储在对象中,让它返回$this允许方法链接如下:

$item = $this->get_item($id)->prepare_items()->getLine(0);

答案 2 :(得分:2)

在PHP 5.4中,这变成了一个简单的单行

  

从PHP 5.4开始,可以对a的结果进行数组解除引用   函数或方法直接调用。之前它只能使用一个   临时变量。

$firstElement = getArray()[0];

,其中

function getArray() {
    return array(1, 2, 3);
}

取自the PHP manual pages (Arrays)的示例#7的略微修改版本。

答案 3 :(得分:0)

对于第一个,你可以做到这一点......对于其他指数,它会变得更加丑陋。

list($algo) = explode(':', $password);

我正在寻找一个更优雅的答案,但我们在这里:)