解析错误意外“:”在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的哪个版本?:
有效
上一篇: Parse error unexpected ":" Works fine in localhost
下一篇: PHP string parse error with necessary semicolon after variable