这个问题只是为了好玩,也许是学习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的提示和技巧的链接,那就太棒了。
答案 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开始,可以对a的结果进行数组解除引用 函数或方法直接调用。之前它只能使用一个 临时变量。
$firstElement = getArray()[0];
,其中
function getArray() {
return array(1, 2, 3);
}
取自the PHP manual pages (Arrays)的示例#7的略微修改版本。
答案 3 :(得分:0)
对于第一个,你可以做到这一点......对于其他指数,它会变得更加丑陋。
list($algo) = explode(':', $password);
我正在寻找一个更优雅的答案,但我们在这里:)