PHP给出了意想不到的[ - 但为什么?

时间:2014-08-27 12:10:38

标签: php datetime if-statement

有这个奇怪的麻烦:

date_parse('2014-08-26')['hour'] 

它适用于php命令行。

但这会引发错误:

if(date_parse('2014-08-26')['hour']){ echo "works";}

语法错误,意外'['

为什么?结果应该是介于0和23之间的任何数字,或者什么都不是,在这种情况下不会有任何数字。


编辑:是的,我使用的是PHP 5.3.14

4 个答案:

答案 0 :(得分:3)

请注意,PHP版本低于5.4 can not access array attributes from a functions return value directly。您必须将函数返回值存储在新变量中,并从该变量访问该数组。

所以这段代码

if(date_parse('2014-08-26')['hour']){ echo "works";}

仅适用于PHP 5.4及更高版本。如果运行低于5.4的PHP版本,则代码应如下所示:

$parseResult = date_parse('2014-08-26');

if($parseResult['hour']) { echo "works"; }

答案 1 :(得分:1)

在版本5.4之前,PHP没有允许您在不使用临时变量的情况下取消引用从函数调用返回的数组元素:

http://php.net/manual/en/language.types.array.php#example-102

答案 2 :(得分:1)

您必须使用以下5.4版本的PHP。如果是,请使用最新版本的PHP,因为5.4版本不允许使用括号[]

答案 3 :(得分:-1)

$cond = date_parse('2014-08-26')['hour'];
if($cond)
{ 
 echo "works";
}

希望这有效