题
知道以下内容在 PHP 中是否可以作为单行实现吗?:
<?php
$firstElement = functionThatReturnsAnArray()[0];
...看来并没有“拿”的意思。我需要以两步执行此操作:
<?php
$allElements = functionThatReturnsAnArray();
$firstElement = $allElements[0];
...只是好奇 - 我使用的其他语言允许这样的事情,而我很懒,在 PHP 中错过了这一点......任何见解表示赞赏...
解决方案
尝试:
<?php
$firstElement = reset(functionThatReturnsAnArray());
如果您只是寻找数组的第一个元素。
其他提示
@斯科特雷宁
这不是真的。这将起作用:
list(,,$thirdElement) = $myArray;
不幸的是,这对于 PHP 来说是不可能的。你必须使用两条线来完成它。
你 能 在一行中完成此操作!使用 数组移位().
<?php
echo array_shift(i_return_an_array());
function i_return_an_array() {
return array('foo', 'bar', 'baz');
}
当执行时,它会回显“foo
".
list() 在这里很有用。对于除第一个数组元素之外的任何元素,您都需要用无用的变量填充它。例如:
list( $firstElement ) = functionThatReturnsAnArray();
list( $firstElement , $secondElement ) = functionThatReturnsAnArray();
等等。
我实际上使用了为此目的编写的一个便利函数:
/**
* Grabs an element from an array using a key much like array_pop
*/
function array_key_value($array, $key) {
if(!empty($array) && array_key_exists($key, $array)) {
return $array[$key];
}
else {
return FALSE;
}
}
然后你就这样称呼它:
$result = array_key_value(getMeAnArray(), 'arrayKey');
您可以使用 array_slice()
, ,像这样:
$elementX = array_slice(functionThatReturnsAnArray(), $x, 1);
还注意到 end()
没有提到。它返回数组的最后一个元素。
任何一个 current($array)
或者 array_shift($array)
会起作用,前者会离开 大批 完好无损的。
nickf,很高兴知道,谢谢。不幸的是,除了几个逗号之外,还有可读性问题。
我认为以上任何内容都需要注释来解释您正在做什么,从而变成两行。我发现这样做更简单:
$element = functionThatReturnsArray();
$element = $element[0];
这样,您就不会使用额外的变量,并且您在做什么是显而易见的。
$firstItem = current(returnsArray());
好吧,我找到了几种方法来获得你想要的东西,而无需调用另一个函数。
$firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false;
对于字符串你可以使用
$string = (($t = functionThatReturnsAnArray())==0) . $t[0];
..有趣的问题
德拉科
我猜测这是一个内置函数或库函数,因为听起来您无法直接编辑它。我建议创建一个包装函数来为您提供所需的输出:
function functionThatReturnsOneElement( $arg )
{
$result = functionThatReturnsAnArray( $arg );
return $result[0];
}
$firstElement = functionThatReturnsOneElement();
据我所知这是不可能的,我曾多次想自己这样做。
仅适用于 php 版本 5。
如果它始终是第一个元素,您可能应该考虑让函数仅返回数组中的第一项。如果这是最常见的情况,你可以使用一点冷静:
function func($first = false) {
...
if $first return $array[0];
else return $array;
}
$array = func();
$item = func(true);
我的 php 有点生疏,但我很确定它可以工作。
您还可以查看 array_shift() 和 array_pop()。
这或许也是可能的:
array(func())[0][i];
0 代表函数。
有时我会更改函数,因此它可以选择返回一个元素而不是整个数组:
<?php
function functionThatReturnsAnArray($n = NULL) {
return ($n === NULL ? $myArray : $myArray[$n]);
}
$firstElement = functionThatReturnsAnArray(0);