Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同版本中的PHP语法错误_Php_Syntax Error - Fatal编程技术网

不同版本中的PHP语法错误

不同版本中的PHP语法错误,php,syntax-error,Php,Syntax Error,我有时从这样的数组中获取值:$var=array('key1'=>'value1')['key1'],因此$var应等于value1 我在具有PHPV5.4.16的服务器上运行这样的代码,例如,explode('-',$str)[0]并且工作正常。 现在,如果我将此代码传输到另一个使用PHPV5.3.10的服务器,我会得到一个错误(语法错误):语法错误,意外的“[”… 这是因为版本吗?(我不这么认为,因为版本之间的差异太小了…),还是服务器中的某些设置? 有人能告诉我吗?是的,这取决于您正在运行

我有时从这样的数组中获取值:
$var=array('key1'=>'value1')['key1']
,因此
$var
应等于
value1

我在具有PHPV5.4.16的服务器上运行这样的代码,例如,
explode('-',$str)[0]并且工作正常。
现在,如果我将此代码传输到另一个使用PHPV5.3.10的服务器,我会得到一个错误
(语法错误):语法错误,意外的“[”…

这是因为版本吗?(我不这么认为,因为版本之间的差异太小了…),还是服务器中的某些设置?
有人能告诉我吗?

是的,这取决于您正在运行的PHP版本

从PHP5.4开始,可以对 函数或方法直接调用。以前只能使用 临时变量

从PHP5.5开始,可以对数组文本进行数组解引用

在PHP5.3中,必须使用

$exploded = explode('-', $str);
$first = $exploded[0];
// or
list($first,) = explode('-', $str);
在PHP5.4及更高版本中,您可以使用

$first = explode('-', $str)[0];

PHP5.4添加了短数组语法。所以这都是关于版本的吗?好的,谢谢(Y)它与短数组语法无关,而是与数组解引用有关。@MichalBrašna是的。“已经添加了函数数组解引用,例如foo()[0]”。请参见我根据@MichalBrašna找到的