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

时间:2008-09-16 01:56:28

标签: php arrays function

任何想法如何在PHP中将以下内容作为单行?:

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

......似乎并没有“接受”。我需要以双步进行:

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

...只是好奇 - 我玩的其他语言允许这样的事情,而且我很懒,想念PHP中的这个......任何洞察力都赞赏......

17 个答案:

答案 0 :(得分:9)

@Scott Reynen

那不是真的。这将有效:

list(,,$thirdElement) = $myArray;

答案 1 :(得分:8)

尝试:

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

如果你只是在寻找数组的第一个元素。

答案 2 :(得分:6)

不幸的是,PHP无法做到这一点。你必须使用两行来完成它。

答案 3 :(得分:5)

可以在一行中执行此操作!使用array_shift()

<?php

echo array_shift(i_return_an_array());

function i_return_an_array() {
    return array('foo', 'bar', 'baz');
}

执行此操作时,它将回显“foo”。

答案 4 :(得分:3)

list()在这里很有用。除了第一个数组元素之外,您还需要使用无用的变量填充它。例如:

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

等等。

答案 5 :(得分:1)

我实际上使用了为此目的编写的便利功能:

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

答案 6 :(得分:1)

current($array)array_shift($array)都可以使用,前者会保留数组

答案 7 :(得分:1)

您可以使用array_slice(),如下所示:

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

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

$firstItem = current(returnsArray());

答案 10 :(得分:0)

我认为上述任何一项都需要评论才能解释你正在做什么,从而成为两条线。我发现它更简单:

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

这样,您就不会使用额外的变量,而且您正在做的事情显而易见。

答案 11 :(得分:0)

好吧,我已经找到了几种方法来获得你想要的东西,而不需要调用另一个函数。

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

和你可以使用的字符串

$string = (($t = functionThatReturnsAnArray())==0) . $t[0];

..有趣的问题

德拉科

答案 12 :(得分:0)

nickf,很高兴知道,谢谢。不幸的是,除了少数逗号外,还有可读性问题。

答案 13 :(得分:-1)

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

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代表该功能。

答案 14 :(得分:-1)

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

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

答案 15 :(得分:-1)

http://us3.php.net/reset

仅适用于php版本5。

答案 16 :(得分:-1)

据我所知,这是不可能的,我想多次这样做。