【问题标题】:Why do I have to assign function return value to a variable before operating on it in PHP为什么我必须在 PHP 中对变量进行操作之前将函数返回值分配给变量
【发布时间】:2011-11-21 18:45:53
【问题描述】:

如果我有这样的功能:

function foo(){
 return array("hello" => "world");
}

我不能像这样调用函数并对返回值进行操作

$test = foo()["hello"];

相反,我必须像这样将它分成两行

$test = foo();
$test = $test["hello"];

有没有办法解决这个问题?如果不是,为什么 PHP 会强制执行此操作。另外,如果有任何后果,foo() 实际上会返回一个二维数组。

【问题讨论】:

  • 只是好奇.. 您能否与我们分享一下您为什么要寻找一种方法来绕过从函数中分配值的现有方法?
  • @Nonym +1 因为没有厚颜无耻地要求知道我为什么问这个问题
  • 我正在构建一些辅助函数来处理 sql 查询。有时返回的数组是单列数组(即主键),有时它是多列数组(即名字、姓氏、昵称)。在前者的情况下,我只想一次获得主键。
  • 所以..就像 PHP 已经拥有的单行 if-then-else 语句一样......这也应该是一个很好的新单行......很高兴它似乎正在为 PHP 工作5.4!
  • @Nonym 我也喜欢(<cond>) ? something : somethingElse,这应该是一个很好的补充

标签: php function return-value


【解决方案1】:

PHP 没有数组延迟,这是您要求的功能。

即将发布的 PHP 版本 PHP 5.4 确实具有此功能。

【讨论】:

  • 在这些情况下的协议是什么。我应该更改标题以反映这一点,还是保留它?
【解决方案2】:

我认为:

$test = foo();

设置$test为数组,现在就使用吧:

echo $test["hello"] produces "world"

【讨论】:

  • 哦,我明白了,您正在尝试从函数中设置一个值为“hello”的变量。我的错。
  • 是的,我没有详细介绍,但是返回的数组是二维的,我并不总是需要所有信息
猜你喜欢
  • 2010-12-10
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多