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

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

这让我很困惑,因为我以前从未经历过这样的事情。我的本地主机环境是 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[ 中的意外“[” =27=]

我似乎无法弄清楚哪里出了问题。 我在下面放置了一个沙箱 link,我能够在那里重现该问题。如果我 select 5.3.29 它不起作用,但是当我 select 说它开始工作 PHP 5.4 时,它就起作用了。 http://sandbox.onlinephpfunctions.com/code/96decf9191975c9948d346d183f6d443f0beeeaf

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

存在问题 explode('-',$account_record['User']['date_of_birth'])[2],在过去的 php 时代,您无法从数组中获取值,因为它们是从函数返回的,您必须将其保存到首先是变量。