Php 如果返回为空,但正常值不为空,为什么包含的时间更短
正常: 缩短:Php 如果返回为空,但正常值不为空,为什么包含的时间更短,php,Php,正常: 缩短: if($pages){ include('public/pages/'.$pages->page.'.php'); }else include('public/pages/errors/404.php'); 为什么这种缩短方式总是返回空的,而正常方式工作正常? 我只能将echo与shortif(){}else{}一起使用吗?谢谢如果条件为真,您没有添加“.php” 将其更改为: include('public/pages/' . ($pages) ? $pages-
if($pages){
include('public/pages/'.$pages->page.'.php');
}else include('public/pages/errors/404.php');
为什么这种缩短方式总是返回空的,而正常方式工作正常?
我只能将echo与shortif(){}else{}
一起使用吗?谢谢如果条件为真,您没有添加“.php”
将其更改为:
include('public/pages/' . ($pages) ? $pages->page : "errors/404" . '.php');
注意我是如何添加第二对括号的。“.php”现在添加到三元表达式返回的内容中,而不是直接添加到假表达式中
如果没有正确的括号,您真正比较的是
('public/pages/'.$pages)
,并返回true:$pages->page
,返回false则返回“errors/404”。php',这显然是错误的。所以只需删除if的()即可?不,添加适当的(…),这样您就可以将.php
附加到表达式的结果之后,而不仅仅是表达式的后半部分。没有“shorterif
”这样的事情。是一个运算符(一个语句)。运算符和语句是不同的概念,在程序中有不同的用途。它们不能互换。请阅读。字符串连接(
)比三元运算符(?:
)具有更高的优先级,并且表达式的计算结果与您想象的不一样。我会这样做:包括(page:“errors/404”).php)代码>我刚刚删除了()并且它工作正常是坏的吗?包括('public/pages/'.$pages?$pages->page:'errors/404'..php')@不是真的,三元运算符的优先级比串联运算符低“,如图所示,我会接受您的答案,但请告诉我使用您的方式和不使用()的方式之间的区别@德拉金
include('public/pages/' . ($pages ? $pages->page : "errors/404") . '.php');