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