是什么让这项工作?

时间:2016-03-14 05:16:10

标签: php

我正在尝试使用这一块代码作为模板,但我还没有完全理解一行如何工作。我首先提供完整的块,然后我会挑出我不理解的路线。

/** 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的新手,我希望在使用它之前更好地理解我要使用的代码。

任何答案都会很有意义!

2 个答案:

答案 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