關(guān)于代碼錯(cuò)誤問題的糾正
這樣才是正確的!
<?php
???? $maxLine = 4; //每排人數(shù)
? $no = 17;//學(xué)生編號(hào)
???? $line = ceil($no/$maxLine);
? $row = $no%$maxline?$no%$maxLine:$no%4;
?
? echo "編號(hào)<b>".$no."</b>的座位在第<b>".$line."</b>排第<b>".$row."</b>個(gè)位置";
?>
2016-03-18
源代碼沒錯(cuò)。
首先我們理解一下rows的意思,rows指的是,你在第幾個(gè)座位。比如例子中,每一行可以坐4個(gè)人,這里rows可以是1,2,3,4。這里我們先不考慮在第幾行。
因?yàn)槲易⒁獾侥愀创a的差別主要是在這一句上邊
那么我們就來聊聊這一句:這是一個(gè)三元運(yùn)算,解讀一下意思是:
當(dāng)$no%$maxline運(yùn)算結(jié)果不為0,那么$row =?$no%$maxLine 也就是說,當(dāng)座位號(hào)不可以被每排坐的人數(shù)整除,rows是座位號(hào)對每排人數(shù)的求余,即是說,你前邊所有排都填滿了,剩下你學(xué)號(hào)所在的這一排沒有坐滿,余出來的這些人坐最后一排,你這個(gè)學(xué)號(hào)在最后一排的第幾個(gè)位置。
當(dāng)$no%$maxline運(yùn)算結(jié)果為0(也就是說,$no可以被$maxline整除,意思是剛好你這個(gè)學(xué)號(hào)的位置可以使得你和前邊的人可以填滿每一排。)這個(gè)時(shí)候,原本教程里的結(jié)果是$row = $maxLine,注意,這個(gè)maxLine指的是每一排可以坐的人數(shù),因?yàn)槟闶亲詈笠粋€(gè)人呀,所以你在本排的位置,確實(shí)是maxLine沒有錯(cuò),在這里也就是第四個(gè)位置。
接下來來考慮一下你的想法:$no%4;這是一個(gè)求余,按理來講,當(dāng)取到后邊這個(gè)$no%4的時(shí)候,應(yīng)該是在$no%$maxline=0的時(shí)候,由于$maxLine=4,那么此處你的結(jié)果也為0,仔細(xì)考慮一下,你能坐到第0個(gè)位置嗎?實(shí)際上還是第四個(gè)位置。
2016-03-10