首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解引用函数结果的PHP语法

解引用函数结果的PHP语法
EN

Stack Overflow用户
提问于 2009-04-13 01:12:42
回答 21查看 19.7K关注 0票数 35

背景

在我经常使用的所有其他编程语言中,在不声明一个新变量来保存函数结果的情况下,对函数的返回值进行操作是很简单的。

然而,在PHP中,这似乎并不是那么简单:

example1 (函数结果是一个数组)

代码语言:javascript
复制
<?php 
function foobar(){
    return preg_split('/\s+/', 'zero one two three four five');
}

// can php say "zero"?

/// print( foobar()[0] ); /// <-- nope
/// print( &foobar()[0] );     /// <-- nope
/// print( &foobar()->[0] );     /// <-- nope
/// print( "${foobar()}[0]" );    /// <-- nope
?>

example2 (函数结果是一个对象)

代码语言:javascript
复制
<?php    
function zoobar(){
  // NOTE: casting (object) Array() has other problems in PHP
  // see e.g., http://stackoverflow.com/questions/1869812
  $vout   = (object) Array('0'=>'zero','fname'=>'homer','lname'=>'simpson',);
  return $vout;
}

//  can php say "zero"?       
//  print zoobar()->0;         //  <- nope (parse error)      
//  print zoobar()->{0};       //  <- nope                    
//  print zoobar()->{'0'};     //  <- nope                    
//  $vtemp = zoobar();         //  does using a variable help?
//  print $vtemp->{0};         //  <- nope     
EN

回答 21

Stack Overflow用户

回答已采纳

发布于 2011-10-25 12:41:07

这是具体的数组取消引用,它目前在php5.3中是不支持的,但是在下一个版本5.4中应该是可能的。另一方面,在当前php版本中,对象取消引用是可能的。我也期待这个功能!

票数 20
EN

Stack Overflow用户

发布于 2009-04-13 01:14:59

PHP无法访问函数的数组结果。有些人称这是一个问题,有些人只是接受这种语言是如何设计的。因此,PHP让您创建不必要的变量来提取所需的数据。

所以你得这么做。

代码语言:javascript
复制
$var = foobar();
print($var[0]);
票数 26
EN

Stack Overflow用户

发布于 2009-11-22 17:01:31

PHP5.4:数组删除是可能的

  • http://svn.php.net/viewvc?view=revision&revision=300266

示例(来源):

代码语言:javascript
复制
function foo() {
    return array(1, 2, 3);
}
echo foo()[2]; // prints 3

使用PHP5.3,您将得到

代码语言:javascript
复制
Parse error: syntax error, unexpected '[', expecting ',' or ';' 

原始答案:

这是一直 已询问 已经 在此之前。答案是否定的。这是不可能的。

关于此主题的报价 安迪·古特曼

这是一个众所周知的特性请求,但在PHP5.0中不支持。我不能告诉你它是否会得到支持。这需要一些研究和很多思考。

您还可以在PHP中找到这个请求 一个数字 时代性。关于技术细节,我建议您查看官方RFC和/或询问PHP内部

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/742764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档