按相对位置对项目进行计数和分组.例如,按5's分组

Counting and grouping items by relative position. grouping by 5's for instance

本文关键字:例如 分组 位置 相对 项目      更新时间:2023-09-26

这个想法是,将有一个php函数对目录(scandir)中的每个图像返回html

我想使用a来遍历数组并将值赋给img src值

但是为了有一个函数赋给类值允许

我需要能够基于 来分配类

在一组对象中的相对位置。例如,一个目录中有50张图片,scandir返回这些文件的数组,函数为每个项目生成img标记,分配类(我怀疑是变量中的函数来完成这个任务),循环遍历5个类,输出如下

<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">
<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">

<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">

<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">

<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">

<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">

现在的数字50 &5个是假设的,我更有可能使用7或12个班的作业周期

我该怎么做呢?我只是在自学,这真的很重要。

你基本上是在寻找模运算符。我认为它在javascript中也是可用的,下面是一个PHP示例,在两个地方使用了它。

  1. 循环遍历可用的类名数组
  2. 在每个X图像之后插入一个换行符。

模算子% Docs返回除法运算的剩余值。

演示:

$images = array_fill(0, 50, 'example'); // 50 example images
$classes = range('a', 'e'); // 5 example classes (a-e)
foreach($images as $index => $src)
{
    # get image class    
    $class = $classes[$index % count($classes)];
    printf('<img class="%s" src="%s">'."'n", $class, $src);
    # echo empty line after each 5th image
    if (4 === $index % 5)
        echo "'n";
}
输出:

<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">
<img class="a" src="example">
<img class="b" src="example">
<img class="c" src="example">
<img class="d" src="example">
<img class="e" src="example">
<img class="a" src="example">
<img class="b" src="example">
...
$cycle = 5;    
$classes = array( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' );
$i = 0;
foreach( $files as $file ) {
    echo '<img class="'.$classes[ $i % $cycle ].'" src="'.$file.'">';
    ++$i;
}

您可以使用下面代码段中定义的cycle方法。

这将循环遍历数组中的值。如果有必要,[1,2,3,4,5]reset_cycle将重置循环,尽管我不认为这个用例需要重置。

您可以使用模数(%)来实现这一点。在你的循环中,记录一个数字,计算你的循环进行了多少次迭代。然后使用模将一个不同的类分配给html。例如:

$rowCount = 5; //number of images in a row
$i = 1;
foreach($images as $image) {
    $classNumber = $i % $rowCount;
    echo '<img class="image_' . $classNumber . '" src="example">';
    $i++;
}

我在没有测试的情况下写了这个,所以可能在某个地方有错误,但这是为了让你知道你可以做什么。看看这个小例子。或者谷歌"php modulo"