一尘不染

PHP语法用于解引用函数结果

php

背景

在我定期使用的所有其他编程语言中,无需声明新变量即可保存函数结果就可以对函数的返回值进行操作。

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

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

<?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(函数结果是一个对象)

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

阅读 352

收藏
2020-05-26

共1个答案

一尘不染

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

2020-05-26