解引用函数结果的PHP语法

解引用函数结果的PHP语法

背景


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


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


示例1(函数结果是数组)

<?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

?>

示例2(函数结果是一个对象)

<?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     

有人能建议如何在PHP中这样做吗?


慕田峪7331174
浏览 426回答 3
3回答

素胚勾勒不出你

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

哆啦的时光机

PHP无法访问函数的数组结果。有些人称这是一个问题,有些人只是接受这是如何设计语言。因此,PHP让您创建不必要的变量来提取所需的数据。所以你得这么做。$var&nbsp;=&nbsp;foobar();print($var[0]);
打开App,查看更多内容
随时随地看视频慕课网APP