PHP:我可以引用函数返回的数组的单个成员吗?

PHP:我可以引用函数返回的数组的单个成员吗?,php,arrays,function,Php,Arrays,Function,您知道如何在PHP中将以下内容作为一行实现吗 <?php $firstElement = functionThatReturnsAnArray()[0]; 不幸的是,这在PHP中是不可能的。您必须使用两行代码来完成此操作。据我所知,这是不可能的,我曾多次希望自己完成此操作。尝试: <?php $firstElement = reset(functionThatReturnsAnArray()); 仅在php版本5中可用。list()在这里很有用。对于除第一个数组元素以外的任何数

您知道如何在PHP中将以下内容作为一行实现吗

<?php
$firstElement = functionThatReturnsAnArray()[0];

不幸的是,这在PHP中是不可能的。您必须使用两行代码来完成此操作。

据我所知,这是不可能的,我曾多次希望自己完成此操作。

尝试:

<?php
$firstElement = reset(functionThatReturnsAnArray());

仅在php版本5中可用。

list()在这里很有用。对于除第一个数组元素以外的任何数组元素,都需要用无用的变量填充它。例如:

list( $firstElement ) = functionThatReturnsAnArray();
list( $firstElement , $secondElement ) = functionThatReturnsAnArray();
等等。

@Scott Reynen

那不是真的。这将有助于:

list(,,$thirdElement) = $myArray;

尼克,很高兴知道,谢谢。不幸的是,除了几个逗号之外,它还存在可读性问题。

如果它始终是第一个元素,您可能应该考虑让函数只返回数组中的第一个项。如果这是最常见的情况,您可以使用一点冷静:

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代表函数。

您可以在一行中完成此操作!使用

$firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false;

当前($array)
array\u shift($array)
都可以工作,前者将保持数组的完整性。

好吧,我找到了几种方法,可以在不调用其他函数的情况下获得所需的内容

$firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false;
还有你可以使用的字符串

$string = (($t = functionThatReturnsAnArray())==0) . $t[0];
。。有趣的问题


Draco

您可以使用
数组\u slice()
,如下所示:

$elementX = array_slice(functionThatReturnsAnArray(), $x, 1);

还注意到没有提到
end()
。它返回数组的最后一个元素。

我认为上面的任何一项都需要注释来解释您在做什么,因此变成两行。我发现这样做更简单:

$element = functionThatReturnsArray();
$element = $element[0];

这样,您就不需要使用额外的变量,您所做的很明显。

有时我会更改函数,以便它可以选择返回一个元素而不是整个数组:

$firstItem = current(returnsArray());
<?php
function functionThatReturnsAnArray($n = NULL) {
  return ($n === NULL ? $myArray : $myArray[$n]);
}
$firstElement = functionThatReturnsAnArray(0);

我实际上使用了我编写的一个方便函数来实现以下目的:

/**
 * 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');

我猜这是一个内置函数或库函数,因为听起来您无法直接编辑它。我建议创建一个包装函数,以提供所需的输出:

function functionThatReturnsOneElement( $arg )
{
    $result = functionThatReturnsAnArray( $arg );
    return $result[0];
}
$firstElement = functionThatReturnsOneElement();

是的,这是PHP的缺陷之一。好吧,这是一个痛苦,但它不是一个表演的障碍,真的吗?我的意思是,鉴于PHP以糟糕的格式和糟糕的管理代码而闻名,也许这是一件好事!:事实上,其他指向列表和重置的答案很好——不漂亮,但它们做了我希望它们做的事情:-)我喜欢这个网站!是的,这是非常正确的-我尽可能避免它,但它仍然是可能的!:)同意-在我的情况下,这实际上非常有效。谢谢!可爱。那么今晚就要进行大规模的重构了!它可以工作,但现在当你看代码时,你必须花费额外的大脑周期来从reset(func())转换为func()[0]。升级到PHP5.4,然后你就可以这样做了。你可以。
function functionThatReturnsOneElement( $arg )
{
    $result = functionThatReturnsAnArray( $arg );
    return $result[0];
}
$firstElement = functionThatReturnsOneElement();