背景
在我定期使用的所有其他编程语言中,无需声明新变量即可保存函数结果就可以对函数的返回值进行操作。
但是,在PHP中,这似乎并不那么简单:
<?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 ?>
<?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
这是专门用于数组解引用的功能,目前在php5.3中不支持该功能,但在下一个版本5.4中应该可以实现。另一方面,在当前的php版本中,对象取消引用是可能的。我也期待这个功能!