是否有PHP设置设置是否可以索引函数的结果?

Kyl*_*ens 8 php configuration xdebug

我有两台服务器.他们都运行php 5.3.3.此代码在一台服务器上运行,并在另一台服务器上返回语法错误.是否有影响此行为的php ini设置?我在PHP文档中找不到任何相关内容,但我可能在错误的地方查找.

服务器1

> php -v
PHP 5.3.3 (cli) (built: Sep 23 2010 14:15:16) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans

php > echo explode(" ", " foo ")[1];
foo
Run Code Online (Sandbox Code Playgroud)

服务器2

> php -v
PHP 5.3.3 (cli) (built: Jan 31 2011 15:57:29) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

php > echo explode(" ", " foo ")[1];
Parse error: syntax error, unexpected '[', expecting ',' or ';' in php shell code on line 1
Run Code Online (Sandbox Code Playgroud)

另一个想法:两个服务器上的PHP都是自定义编译的,因此它也可能是一个不同的编译标志.

Kyl*_*ens 3

啊哈!我想到了。

我们安装了 Facebook 的 XHP 来分析我们的开发服务器。这个语法(非常优雅)被添加到 PHP 模块中。以下是服务器 1 和服务器 2 之间 php.ini 文件的差异:

> ; XHP https://github.com/facebook/xhp/wiki/Building-XHP
> extension=xhp.so
> ; adds support for the [] operator on the return value of a function
> xhp.idx_expr = 1
> ;  Tracking errors in XHP applications is very difficult without annotations.
> xhp.include_debug = 1
Run Code Online (Sandbox Code Playgroud)

我喜欢这种语法,所以我可能会在另一台服务器上安装 XHP。感谢 Michas 的帮助,建议我比较 ini 文件。