我正在尝试使用这一块代码作为模板,但我还没有完全理解一行如何工作。我首先提供完整的块,然后我会挑出我不理解的路线。
/** settings **/
$images_dir = 'preload-images/';
$thumbs_dir = 'preload-images-thumbs/';
$thumbs_width = 200;
$images_per_row = 3;
/** generate photo gallery **/
$image_files = get_files($images_dir);
if(count($image_files)) {
$index = 0;
foreach($image_files as $index=>$file) {
$index++;
$thumbnail_image = $thumbs_dir.$file;
if(!file_exists($thumbnail_image)) {
$extension = get_file_extension($thumbnail_image);
if($extension) {
make_thumb($images_dir.$file,$thumbnail_image,$thumbs_width);
}
}
echo '<a href="',$images_dir.$file,'" class="photo-link smoothbox" rel="gallery"><img src="',$thumbnail_image,'" /></a>';
if($index % $images_per_row == 0) { echo '<div class="clear"></div>'; }
}
echo '<div class="clear"></div>';
}
else {
echo '<p>There are no images in this gallery.</p>';
}
我理解除了这条线之外的一切都是如此。
if($index % $images_per_row == 0) { echo '<div class="clear"></div>'; }
我知道它从这一行中获得了价值:
$images_per_row = 3;
但实际上是什么使这项工作?我仍然是php的新手,我希望在使用它之前更好地理解我要使用的代码。
任何答案都会很有意义!
答案 0 :(得分:0)
$index % $images_per_row == 0
%表示“mod”,例4 mod 2 = 0.
A%B =我们将A除以B时的余数。
在你的脚本中,当$index
的余数除以$images_per_row
等于0时,条件得到满足(值为'true'),这意味着$index
除{{1}的可分性}}
希望它有所帮助!
答案 1 :(得分:0)
%
是模运算符。它将这两个数字分开,然后在除法后返回余数。
如果你记得你的分数以及如何将它们降低到最低值,这很容易理解。
所以,如果我们将5 % 2
变成一个分数并减少它:
5 1 (this is the remainder)
--- → 2 ---
2 2
所以,5 % 2 = 1
。
如果我们采用8 % 3
,我们可以做同样的事情:
8 2 (this is the remainder)
--- → 2 ---
3 3
所以,8 % 3 = 2
。
如果没有余数,例如9 % 3
,那么您将获得0
。参见:
9 0 (this is the remainder)
--- → 3 ---
3 3
您可以编写一些PHP来查看执行模运算时的值:
$perRow = 3;
for ($i = 0; $i < 10; $i++) {
echo "$i % $perRow = ", $i % $perRow, ' | ', "$i / $perRow = ", ($i / $perRow), "\n";
}
输出:
0 % 3 = 0 | 0 / 3 = 0
1 % 3 = 1 | 1 / 3 = 0.33333333333333
2 % 3 = 2 | 2 / 3 = 0.66666666666667
3 % 3 = 0 | 3 / 3 = 1
4 % 3 = 1 | 4 / 3 = 1.3333333333333
5 % 3 = 2 | 5 / 3 = 1.6666666666667
6 % 3 = 0 | 6 / 3 = 2
7 % 3 = 1 | 7 / 3 = 2.3333333333333
8 % 3 = 2 | 8 / 3 = 2.6666666666667
9 % 3 = 0 | 9 / 3 = 3