问答详情
源自:5-9 PHP中的算术运算符(2)

什么意思,我都不懂。。。。。。。。。。。。

<?php
     $maxLine = 4; //每排人数
     $no = 17;//学生编号
     $line =ceil($no/$maxLine);
     $row = $no%$maxLine?no%$maxLine:$maxLine;
     
     echo "编号<b>".$no."</b>的座位在第<b>".$line."</b>排第<b>".$row."</b>个位置";
?>

提问者:luona 2015-11-09 18:29

个回答

  • wuerpeng
    2015-11-13 16:38:32

    给@Perona点个赞 本来不会的看评论会了 啊啊哈


  • Perona
    2015-11-09 20:17:41

    $maxLine = 4; //每排人数
    $no = 17;//学生编号

    这2行分别定义变量$maxLine 和变量$no ,并且赋值。

    $line =ceil($no/$maxLine);

    这一行定义变量$line,赋值为$no(学生编号)除以$maxLine(每排人数)的结果向上取整ceil。为什么要向上取整。一排是4位,那么编号5~8是不是都在2排。如:5/4,结果为1.25。那么向上取整是1。这个变量其实存的就是排号数。

    这里要明白ceil() 函数。

    ceil() 函数向上舍入为最接近的整数。注意不是四舍五入。

    如:

    <?php
    echo(ceil(0.6);//输出结果是1
    echo(ceil(0.4);//输出结果是1
    ?>
    $row = $no%$maxLine?no%$maxLine:$maxLine;

    这里用的是三目运算符,又称为三元运算符。

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

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

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

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

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

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

    echo "编号<b>".$no."</b>的座位在第<b>".$line."</b>排第<b>".$row."</b>个位置";

    这一句就不用解释了吧,就是输出语句而已。