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

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

PHP: Can I reference a single member of an array that is returned by a function?

任何想法如何在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()。

这也可能是可能的:

1
array(func())[0][i];

0是该功能。


推荐阅读

    显示linux时间命令?

    显示linux时间命令?,时间,系统,信息,一致,命令,文件,终端,目录,选项,参数,lin

    linux显示最多的命令?

    linux显示最多的命令?,系统,情况,信息,数据,工具,电脑,状态,时间,分析,命令,

    linux显示错误命令?

    linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚

    linux逐行显示命令?

    linux逐行显示命令?,标准,信息,系统,工作,地址,命令,实时,名称,文件,目录,Lin

    linux显示时间命令?

    linux显示时间命令?,时间,系统,管理,标准,信息,单位,工具,数据,中国,命令,lin

    linux启动显示命令行?

    linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,l

    linux启动显示命令行?

    linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,l

    linux显示之前的命令?

    linux显示之前的命令?,系统,信息,命令,地址,服务,环境,数据,标准,数字,不了,l

    linux打开显示器命令?

    linux打开显示器命令?,信息,工具,系统,环境,发行,实时,数据,设备,命令,文件,L

    linux命令实时显示?

    linux命令实时显示?,系统,实时,时间,信息,情况,命令,对比,电脑,名称,一致,lin

    linux外部命令显示?

    linux外部命令显示?,系统,工具,命令,一致,盘中,软件,技术,外部,内部,文件夹,L

    linux命令显示ip?

    linux命令显示ip?,地址,系统,网络,信息,技术,电脑,手机,设备,服务,管理,配置L

    linux编译时显示命令?

    linux编译时显示命令?,系统,基础,工具,代码,百度,下来,网上,命令,内核,文件,L

    linux显示运行命令?

    linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如

    显示linux网卡命令行?

    显示linux网卡命令行?,系统,信息,工具,网络,服务,电脑,网卡,技术指标,地址,

    linux命令显示内容?

    linux命令显示内容?,标准,系统,数据,命令,百度,实时,时间,信息,文件,内容,lin

    linux常用显示命令?

    linux常用显示命令?,工作,地址,系统,信息,管理,命令,目录,标准,功能,常用命

    linux用命令显示账号?

    linux用命令显示账号?,密码,系统,信息,地址,电脑,名字,用户,命令,用户名,用

    linux命令行同步显示?

    linux命令行同步显示?,地址,工具,系统,数据,工作,时间,命令,综合,网址,信息,L

    linux命令显示窗口?

    linux命令显示窗口?,系统,工具,首页,终端,密码,命令,窗口,界面,桌面,选项,lin