中药方大全小图标
您当前的位置:首页 > 其他 > 网站日记

帝国cms列表模板中php运算顺序问题

提示: 阅读权限:公开  来源:jiuhecai  作者:jiuhecai

错误写法一:

$listtemp=' <li class=" '.$no%2==0?'right':'left'.' "><a href="[!--titleurl--]">[!--title--]</a> [!--newstime--]</li>';

出来的效果以及源代码,该有的“标题“没有出现



               

正确的写法:

$listtemp=' <li class=" '.($no%2==0?'right':'left').' "><a href="[!--titleurl--]">[!--title--]</a> [!--newstime--]</li>';


不带括号,会出现语法歧义。

系统会理解为:

$listtemp=(' <li class=" '.$no) %2==0?'right':('left.' "><a href="[!--titleurl--]">[!--title--]</a> [!--newstime--]</li>');

这是因为,%运算符是这个表达式中优先级最高的,而且是左结合的。(优先级依次是 %左,.左,==无,?:左,=右)

因为 ' <li class=" '.$no  转换为数字类型后,总是0,所以6楼的代码,全是right。

再看错误代码二:

$listtemp=' <li class="  '.$style=$no%2==0?'right':'left'.' "><a href="[!--titleurl--]">[!--title--]</a> [!--newstime--]</li> ';

增加了赋值运算等号,赋值运算等号(=)的右结合属性,阻挡了$no的左结合,这样变量$no,老老实实参加了运算,逻辑是对的。

然而,因了三目运算符的级别太低,低于(.)连接符,导致第三个目实非所愿。运算符优先级和结合属性比较复杂,所以我们为了不出问题,感觉没有把握的地方,使用圈地符()好了。          

tags: 帝国cms php 帝国
返回顶部
推荐资讯
视频:田纪钧讲关节不痛的秘密、膝关节拉筋法
视频:田纪钧讲关节不
白露到了,你还好吗?
白露到了,你还好吗?
尿疗与断食
尿疗与断食
给风疹反复发作女孩的药方(组图)
给风疹反复发作女孩的
相关文章
栏目更新
栏目热门
  1. 帝国cms全站搜索的分页格式如何修改-流程
  2. libreoffice7的命令大全
  3. 帝国cms插件之标题生成标题图片
  4. 帝国cms插件安装模板
  5. useragent两千条,爬虫专用
  6. 帝国cms插件如何兼容gbk和utf8
  7. 帝国cms插件之迅搜
  8. 帝国cms用户上传文件名的命名规则及修改方
  9. 帝国cms7.2函数大全
  10. 帝国cms代码片段备忘录