不明白这里为什么三元运算?

来源:5-9 PHP中的算术运算符(2)

一失手成千古恨

2015-11-27 13:10

$row = $no%$maxLine?$no%$maxLine:$maxLine;不可以直接用吗?$row=$no%$maxLine。如何要用到三元运算那如何比较$row得出true或是false。是不是等于0就是false?

写回答 关注

1回答

  • Perona
    2015-11-27 13:46:19
    已采纳
    $row = $no%$maxLine?no%$maxLine:$maxLine;

    这里根据优先级,是先计算后面的三目运算。后赋值。

    三目运算符,又称为三元运算符。

    语法:条件 ? 结果1 : 结果2 

    ?前面是条件,如果条件为真,那么返回结果1,否则返回结果2。

    这里定义的变量$row存储的值是列数。这里如果$no%$maxLine成立(%是取模的意思,即求余数。),如果成立,返回no%$maxLine,否则返回$maxLine。

    即学生编号除以每排人数有余数,返回余数,否则返回每排人数。

    为什么要这样捏?假如学生编号16,16除以4是没有余数,那么是不是就是在第4列(跟每排人数刚好一样)。

    需要知道的一点,取模运算中,如果被模数不够取模,是直接返回被模数。如:3%4,返回的是3。


    zqbina... 回复一失手成千古...

    0就是0不是false,我用$no=16做实验,得到的位置(列)为0; 其实这道题细琢磨还有挺取巧的,按代码的意思,$no以1为始,所以对应的取的商是上整,取得余则是1,2,3,4(关键是把零巧妙的变成4,还有个例子是在js中对星期的处理,让周一到周六和1,2,3,4,5,6对应,而周日和0对应); ps:如果从0号开始的话,就直接$row=$no%$maxLine;当然ceil()要改成floor();

    2016-02-11 15:52:49

    共 3 条回复 >

PHP入门篇

PHP入门教程轻松学习,行业大牛帮您快速掌握PHP编程基础知识。

456422 学习 · 6590 问题

查看课程

相似问题