任何想法如何在PHP中单行显示以下内容?
1 2
| <?php
$firstElement = functionThatReturnsAnArray()[0]; |
...似乎没有'采取'。 我需要分两步执行此操作:
1 2 3
| <?php
$allElements = functionThatReturnsAnArray();
$firstElement = $allElements[0]; |
...只是好奇-我使用的其他语言允许这样的事情,而且我很懒惰,很想在PHP中错过这一点...感谢任何见识...
@斯科特·雷恩
这不是真的。这将起作用:
1
| list(,,$thirdElement) = $myArray; |
尝试:
1 2
| <?php
$firstElement = reset(functionThatReturnsAnArray()); |
如果您只是在寻找数组的第一个元素。
不幸的是,PHP无法做到这一点。您必须使用两行来执行此操作。
您可以在一行中完成此操作!使用array_shift()。
1 2 3 4 5 6 7
| <?php
echo array_shift(i_return_an_array());
function i_return_an_array() {
return array('foo', 'bar', 'baz');
} |
执行此操作时,它将回显" foo"。
list()在这里很有用。除了第一个数组元素外,您都需要用无用的变量填充它。例如:
1 2
| list( $firstElement ) = functionThatReturnsAnArray();
list( $firstElement , $secondElement ) = functionThatReturnsAnArray(); |
等等。
current($array)或array_shift($array)将起作用,前者将使数组完整。
您可以使用array_slice(),如下所示:
1
| $elementX = array_slice(functionThatReturnsAnArray(), $x, 1); |
还注意到没有提到end()。它返回数组的最后一个元素。
我实际上使用了为此目的编写的便捷函数:
1 2 3 4 5 6 7 8 9 10 11
| /**
* 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;
}
} |
那么您就可以这样称呼它:
1
| $result = array_key_value(getMeAnArray(), 'arrayKey'); |
好吧,我发现了几种无需调用其他函数即可获取所需内容的方法。
1
| $firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false; |
对于字符串,您可以使用
1
| $string = (($t = functionThatReturnsAnArray())==0) . $t[0]; |
..有趣的问题
德拉科
我猜这是一个内置函数或库函数,因为听起来您无法直接对其进行编辑。我建议创建一个包装函数,以提供所需的输出:
1 2 3 4 5 6
| function functionThatReturnsOneElement( $arg )
{
$result = functionThatReturnsAnArray( $arg );
return $result[0];
}
$firstElement = functionThatReturnsOneElement(); |
我认为以上任何一项都需要注释以解释您在做什么,因此变成两行。我发现它更简单:
1 2
| $element = functionThatReturnsArray();
$element = $element[0]; |
这样,您无需使用额外的变量,很明显您在做什么。
尼克,很高兴知道,谢谢。不幸的是,除了几个逗号之外,它还存在可读性问题。
1
| $firstItem = current(returnsArray()); |
有时我会更改函数,因此它可以有选择地返回一个元素而不是整个数组:
1 2 3 4 5
| <?php
function functionThatReturnsAnArray($n = NULL) {
return ($n === NULL ? $myArray : $myArray[$n]);
}
$firstElement = functionThatReturnsAnArray(0); |
http://us3.php.net/reset
仅在php版本5中可用。
据我所知这是不可能的,我想自己做几次。
如果它始终是第一个元素,则您可能应该考虑让函数仅返回数组中的第一项。如果这是最常见的情况,则可以使用一些技巧:
1 2 3 4 5 6 7 8
| function func($first = false) {
...
if $first return $array[0];
else return $array;
}
$array = func();
$item = func(true); |
我的php有点生锈,但是我很确定能正常工作。
您还可以查看array_shift()和array_pop()。
这也可能是可能的:
0是该功能。