PHP:我可以引用函数返回的数组的单个成员吗?
任何想法如何在PHP中以单行显示以下内容?
<?php $firstElement = functionThatReturnsAnArray()[0];
...似乎没有'采取'。我需要分两步执行此操作:
<?php $allElements = functionThatReturnsAnArray(); $firstElement = $allElements[0];
...只是好奇我使用的其他语言允许这样的事情,我很懒惰,很想在PHP中错过这一点...任何见识...
解决方案
回答
不幸的是,PHP无法做到这一点。我们必须使用两行来执行此操作。
回答
据我所知这是不可能的,我想自己做几次。
回答
尝试:
<?php $firstElement = reset(functionThatReturnsAnArray());
如果我们只是在寻找数组的第一个元素。
回答
http://us3.php.net/reset
仅在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是该功能。
回答
我们可以在一行中完成此操作!使用array_shift()。
<?php echo array_shift(i_return_an_array()); function i_return_an_array() { return array('foo', 'bar', 'baz'); }
执行此命令时,它将回显"foo
"。
回答
current($ array)或者array_shift($ array)都可以使用,前者将使数组保持原样。
回答
好吧,我发现了几种无需调用其他函数即可获得所需内容的方法。
$firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false;
对于字符串,我们可以使用
$string = (($t = functionThatReturnsAnArray())==0) . $t[0];
..有趣的问题
德拉科
回答
我们可以使用array_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();