直接使用函数中的数组,无需先分配变量
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中参考命名的结构成员直接初始化或分配变量数组的结构成员?
C#中的结构体要使用new来实例化吗?还是直接声明后直接使用?
GroovyGroovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )