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

时间:2011-08-22 15:42:10

标签: php javascript

这个想法是会有一个php函数回显目录中每个图像的html(scandir)

我想用a for each(类似的东西)来遍历那个数组并将值赋给img src值

但是为了有一个函数来分配允许

的类值

脚本而不是手动css定位我需要能够根据

分配类

一组对象中的相对位置。例如,一个目录中有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&amp; 5是假设的,我更可能使用7或12的类分配周期

真的很高兴我该怎么做?我只是自学,这非常重要。

4 个答案:

答案 0 :(得分:1)

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

  1. 循环浏览一系列可用的类名。
  2. 在每张X图像后插入换行符。
  3. modulo operator %Docs返回除法运算的剩余值。

    Demo

    $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">
    ...
    

答案 1 :(得分:0)

您可以使用cycle中定义的[1,2,3,4,5]方法。

这将循环遍历数组中的值,例如。如有必要,reset_cycle和{{1}}会重置周期,但我认为此用例不需要重置。

答案 2 :(得分:0)

您可以使用模数(%)来实现此目的。 在你的循环中,记录一个数字,计算你对循环的迭代次数。然后使用模数为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++;
}

我在没有测试的情况下从头顶写下了这个,所以在那里可能会出现错误,但它会让你知道你能做些什么。 查看this tiny example。或谷歌搜索“php modulo”。

我希望这会有所帮助。

答案 3 :(得分:0)

$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;
}