直接使用函数中的数组,无需先分配变量

Posted

技术标签:

【中文标题】直接使用函数中的数组,无需先分配变量【英文标题】:Use array from function directly, without assigning a variable first 【发布时间】:2012-10-16 00:01:39 【问题描述】:

我很好奇是否可以将 php 中的函数在一行中返回的特定数组索引值的值分配给一个变量。

现在我有一个返回关联数组的函数,我用两行代码做我想做的事。

$var = myFunction($param1, $param2);
$var = $var['specificIndex'];

在不添加确定返回类型的参数的情况下,有没有办法在一行中做到这一点?

【问题讨论】:

【参考方案1】:

在 PHP 5.4 中,您可以这样做:$var = myFunction(param1, param2)['specificIndex'];

另一个选择是知道数组的顺序,并使用list()。请注意,list 仅适用于数值数组。

例如:

function myFunction($a, $b)
    // CODE
    return array(12, 16);


list(,$b) = myFunction(1,2); // $b is now 16

【讨论】:

这是一个很好的答案。不过,list(,$b) 可能不是用于提高可读性的最佳语法(在我看来)。 @user1477388:我知道,但这只是一个例子。 遗憾的是我的服务器使用 PHP 5.2。不过感谢列表选项【参考方案2】:

您可以添加一个额外的可选参数,如果设置,将返回该值。见以下代码:

function myFunction($param1, $param2, $returnVal = "")

    $arr = array();

    // your code here

    if ($returnVal)
    
        return $arr[$returnval];
    
    else
    
        return $arr;
    

【讨论】:

只是想说有更好的办法解决问题。 我会做一个单行:return ( $returnVal) ? $arr[$returnVal] : $arr; @F***oLothor:如果您愿意,请随时发布它们。 @nickb:是的,这也是一种选择。为了获得最佳可读性,我将我的帖子发布为一个简单的if 声明。

以上是关于直接使用函数中的数组,无需先分配变量的主要内容,如果未能解决你的问题,请参考以下文章

在C中参考命名的结构成员直接初始化或分配变量数组的结构成员?

java 先初始化和赋值

C#中的结构体要使用new来实例化吗?还是直接声明后直接使用?

将数组中的变量直接设置为 Java 中的变量列表

直接调用分配给对象属性的闭包

GroovyGroovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )