Php 三元运算符未按预期工作,而是引发错误
这是我想要的Php 三元运算符未按预期工作,而是引发错误,php,Php,这是我想要的如果day===1则打印出st否则如果date==2则应打印出nd否则如果date==3打印出rd否则打印出默认的th 下面是发出的错误 Parse error: syntax error, unexpected ':', expecting ',' or ';' 我完全忘记了日期格式S: echo date("DS"); 试试这个: <?php echo date("d")===1 ? "st" :
如果day===1
则打印出st
否则如果date==2
则应打印出nd
否则如果date==3
打印出rd
否则打印出默认的th
下面是发出的错误
Parse error: syntax error, unexpected ':', expecting ',' or ';'
我完全忘记了日期格式S:
echo date("DS");
试试这个:
<?php echo date("d")===1 ?
"st" :
(
date("d")===2 ?
"nd" :
(
date("d")===3?
"rd":"th"
)
); // You had here :"th"; ?>
结尾的“th”(参见代码中的注释)打破了三元结构
运算符语法。当语言语法规则被破坏时,会发生解析错误。您的代码不会编译,因此不会执行。错误是由最后一个圆括号后面的片段“th”产生的。删除它,代码将编译 但是,它无法正常工作,因为您使用
==
将字符串(返回的)与数字(1
、2
或3
)进行比较。这样的比较永远不会成功,因为==
同时比较操作数类型及其值
阅读PHP=
和==
的相关内容
代码中还存在逻辑错误<代码>日期('d')返回月份的当前日期。在每月的21日、22日、23日和31日,代码使用了不正确的后缀
一种更好的方法(也更容易阅读)是使用如下的switch
语句:
$day=日期('d');
交换机(天){
案例'01':
案例‘21’:
案例'31:
$suffix='st';
打破
案例'02':
案例“22”:
$suffix='nd';
打破
案件'03:
案件‘23’:
$suffix='rd';
打破
违约:
$suffix='th';
打破
}
回音(${day}${suffix}”);
或者,您可以更聪明地工作,而不是更努力地工作,使用date
的j
和S
格式说明符,让PHP完成繁重的工作:
echo(日期('jS'));
检查一下
另一种是大约10年前就过时了。我建议您使用该类和。它们更易于用于日期和时间计算,并且可以处理时区(旧函数不能)。它不会将输出21作为21处理,使用switch语句或使用intl模块来获取序号。我可以问一下为什么会进行向下表决吗?