为了账号安全,请及时绑定邮箱和手机立即绑定

关于代码错误问题的纠正

这样才是正确的!

<?php
     $maxLine = 4; //每排人数
  $no = 17;//学生编号
     $line = ceil($no/$maxLine);
  $row = $no%$maxline?$no%$maxLine:$no%4;
 


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

正在回答

2 回答

源代码没错。

首先我们理解一下rows的意思,rows指的是,你在第几个座位。比如例子中,每一行可以坐4个人,这里rows可以是1,2,3,4。这里我们先不考虑在第几行。

因为我注意到你跟源码的差别主要是在这一句上边

  $row = $no%$maxline?$no%$maxLine:$no%4;

那么我们就来聊聊这一句:这是一个三元运算,解读一下意思是:

  1. 当$no%$maxline运算结果不为0,那么$row = $no%$maxLine 也就是说,当座位号不可以被每排坐的人数整除,rows是座位号对每排人数的求余,即是说,你前边所有排都填满了,剩下你学号所在的这一排没有坐满,余出来的这些人坐最后一排,你这个学号在最后一排的第几个位置。

  2. 当$no%$maxline运算结果为0(也就是说,$no可以被$maxline整除,意思是刚好你这个学号的位置可以使得你和前边的人可以填满每一排。)这个时候,原本教程里的结果是$row = $maxLine,注意,这个maxLine指的是每一排可以坐的人数,因为你是最后一个人呀,所以你在本排的位置,确实是maxLine没有错,在这里也就是第四个位置。

  3. 接下来来考虑一下你的想法:$no%4;这是一个求余,按理来讲,当取到后边这个$no%4的时候,应该是在$no%$maxline=0的时候,由于$maxLine=4,那么此处你的结果也为0,仔细考虑一下,你能坐到第0个位置吗?实际上还是第四个位置。


2 回复 有任何疑惑可以回复我~
#1

Arvin_Deng 提问者

确实是,因为当$no为4的时候,这样的等式就已经不成立了!看来还是太过于粗心了!谢谢你的指导,让自己发觉在编程的道路上还有很远的路程要走!
2016-03-18 回复 有任何疑惑可以回复我~
#2

_heyshadow 回复 Arvin_Deng 提问者

_(:зゝ∠)_说指导太夸张啦。细心一点就好~加油↖(^ω^)↗!
2016-03-18 回复 有任何疑惑可以回复我~
<?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>个位置";
?>


0 回复 有任何疑惑可以回复我~
#1

Arvin_Deng 提问者

你这个是原代码,是错误的!
2016-03-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP入门篇
  • 参与学习       455961    人
  • 解答问题       6306    个

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

进入课程

关于代码错误问题的纠正

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信