解析错误意外“:”在localhost中正常工作

我有一个PHP应用程序,这是我自己和我们中的一些人完成的。 我没有编码太多,但在localhost运行良好。 当我试图在我们的大学Web服务器上传它时,我得到了这个错误。

意外解析错误:

这发生在这条线上。 所以我相信PHP也必须对前一行做些什么。 所以我添加了上一行和下一行:

<?php
  session_start();
  $page = $_GET["page"] ?: "index"; // Error in this line!

有趣的是,这在我的WAMP服务器本地工作,但它不适用于大学服务器。 代码有问题吗?


我相信您的大学Web服务器中的PHP已经很旧或比5.3旧。 这是一个速记三元运算符,并受PHP版本5.3及以上版本的支持。

解决方法

$page = $_GET["page"] ? $_GET["page"] : "index";

更新:要删除警告,未设置$_GET["page"] ,您可以使用:

$page = isset($_GET["page"]) ? $_GET["page"] : "index"; // Checks if $_GET["page"] exists, and then assigns it.

PHP 7将允许使用这个简短的语法:

$page = $_GET["page"] ?? "index";

从文档:

从PHP 5.3开始,可以忽略三元运算符的中间部分。 表达式expr1?:如果expr1的计算结果为TRUE,则expr3返回expr1,否则返回expr3。


从PHP文档引用

从PHP 5.3开始,可以忽略三元运算符的中间部分。 表达式expr1?:如果expr1的计算结果为TRUE,则expr3返回expr1,否则返回expr3。

我建议你的大学应该将他们的服务器更新到受支持的PHP版本


问题可能是PHP的版本。

也许你的PHP本地版本比你的大学服务器上的版本高。

你必须看到PHP的哪个版本?:有效

链接地址: http://www.djcxy.com/p/11941.html

上一篇: Parse error unexpected ":" Works fine in localhost

下一篇: PHP string parse error with necessary semicolon after variable