PHP内联条件在PHP 5.3.29中不起作用,但在5.6.7中起作用


PHP inline condition not working in PHP 5.3.29 but working in 5.6.7

这让我非常困惑,因为我以前从未经历过这样的事情。我的localhost环境是5.6.7 PHP,我的生产服务器(共享主机)目前运行的是5.3.29,这个内联脚本似乎在生产环境中造成了问题,但在我的本地上运行时没有任何错误、通知甚至警告。

<?php
$account_record['User']['date_of_birth'] = '';
$request_data['User']['dob_data'] = '';
$dob_date = (!empty($account_record['User']['date_of_birth'])?explode('-',$account_record['User']['date_of_birth'])[2]:(!empty($request_data['User']['dob_date'])?$request_data['User']['dob_date']:''));

这是我在PHP 5.3.29上得到的错误
分析错误:语法错误,在[…][…]第5行出现意外的"["

我似乎搞不清楚出了什么问题。我在下面放了一个沙盒链接,我可以在那里复制这个问题。如果我选择5.3.29,它不起作用,但当我选择say it starts working PHP 5.4时,它起作用。http://sandbox.onlinephpfunctions.com/code/96decf9191975c9948d346d183f6d443f0beeeaf

如有任何帮助,我们将不胜感激。谢谢

有一个问题explode('-',$account_record['User']['date_of_birth'])[2],在php的旧时代,你不能从数组中获取值,因为它们是从函数返回的,你必须先将其保存到变量中。