Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果返回为空,但正常值不为空,为什么包含的时间更短_Php - Fatal编程技术网

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与short
if(){}else{}
一起使用吗?谢谢

如果条件为真,您没有添加
“.php”

将其更改为:

include('public/pages/' . ($pages) ? $pages->page : "errors/404" . '.php');
注意我是如何添加第二对括号的。“.php”现在添加到三元表达式返回的内容中,而不是直接添加到假表达式中


如果没有正确的括号,您真正比较的是
('public/pages/'.$pages)
,并返回true:
$pages->page
,返回false则返回“errors/404”。php',这显然是错误的。

所以只需删除if的()即可?不,添加适当的(…),这样您就可以将
.php
附加到表达式的结果之后,而不仅仅是表达式的后半部分。没有“shorter
if
”这样的事情。是一个运算符(一个语句)。运算符和语句是不同的概念,在程序中有不同的用途。它们不能互换。请阅读。字符串连接(
)比三元运算符(
?:
)具有更高的优先级,并且表达式的计算结果与您想象的不一样。我会这样做:
包括(page:“errors/404”).php)我刚刚删除了()并且它工作正常是坏的吗?包括('public/pages/'.$pages?$pages->page:'errors/404'..php')@不是真的,三元运算符的优先级比串联运算符低“,如图所示,我会接受您的答案,但请告诉我使用您的方式和不使用()的方式之间的区别@德拉金
include('public/pages/' . ($pages ? $pages->page : "errors/404") . '.php');