關于代碼錯誤問題的糾正
這樣才是正確的!
<?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>個位置";
?>
這樣才是正確的!
<?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>個位置";
?>
2016-03-10
舉報
2016-03-18
源代碼沒錯。
首先我們理解一下rows的意思,rows指的是,你在第幾個座位。比如例子中,每一行可以坐4個人,這里rows可以是1,2,3,4。這里我們先不考慮在第幾行。
因為我注意到你跟源碼的差別主要是在這一句上邊
那么我們就來聊聊這一句:這是一個三元運算,解讀一下意思是:
當$no%$maxline運算結果不為0,那么$row =?$no%$maxLine 也就是說,當座位號不可以被每排坐的人數整除,rows是座位號對每排人數的求余,即是說,你前邊所有排都填滿了,剩下你學號所在的這一排沒有坐滿,余出來的這些人坐最后一排,你這個學號在最后一排的第幾個位置。
當$no%$maxline運算結果為0(也就是說,$no可以被$maxline整除,意思是剛好你這個學號的位置可以使得你和前邊的人可以填滿每一排。)這個時候,原本教程里的結果是$row = $maxLine,注意,這個maxLine指的是每一排可以坐的人數,因為你是最后一個人呀,所以你在本排的位置,確實是maxLine沒有錯,在這里也就是第四個位置。
接下來來考慮一下你的想法:$no%4;這是一個求余,按理來講,當取到后邊這個$no%4的時候,應該是在$no%$maxline=0的時候,由于$maxLine=4,那么此處你的結果也為0,仔細考慮一下,你能坐到第0個位置嗎?實際上還是第四個位置。
2016-03-10