【问题标题】:PHP inline condition not working in PHP 5.3.29 but working in 5.6.7 [duplicate]PHP 内联条件在 PHP 5.3.29 中不起作用,但在 5.6.7 中起作用 [重复]
【发布时间】:2016-05-07 23:38:00
【问题描述】:

这对我来说完全是令人困惑的,因为我以前从未经历过这样的事情。我的本地主机环境是 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 它不起作用,但是当我选择说它开始工作 PHP 5.4 时,它就起作用了。 http://sandbox.onlinephpfunctions.com/code/96decf9191975c9948d346d183f6d443f0beeeaf

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 没有必要让表达式像你的那样难以理解。

标签: php syntax-error conditional-operator php-parse-error


【解决方案1】:

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

【讨论】:

  • 谢谢穆萨。那行得通。
猜你喜欢
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
相关资源
最近更新 更多