-1

所以我试图创建一个图像库,在 4 列表的每个单元格中显示一个随机图像,并随着更多图像添加到文件夹中而自动扩展,并尝试对其进行设置,以便每次加载时都会随机化图像。是的,它只是按顺序读取图像,并在每一行重新开始,而不是继续浏览图像。我的代码:

    $file = null;

    $fileList = glob("./upload/*.*");
    //create table tag
    echo '<table border=1 cellspacing=1 cellpadding=2 width=100%>'; 
    //create tr tag
    echo '<tr>';  
    # Print each file
    echo "Files found:"; foreach($fileList as $file) {   
    echo " - ". $file;   
    echo '<td width="25%"><img src="' . $file . '" width="100%" /></td>'; }

    echo '</tr>'; 
    echo '</table>';

那是我的第一次尝试,它只是创建了我的第二次尝试的单行:

    //create table
    echo '<table border=1 cellspacing=1 cellpadding=2 width=100%>';
    echo '<tr>';

    $x = 1;
    $y = 1;

    //  Display  the  results 
    do { 

    do {
    foreach($fileList as $file) 
    echo '<td width="25%"><img src="' . $file . '" width="100%" /></td>';
    $x = $x +1;
    $y = $y +1;
    }
    while ($x <= 3);

    do {
    foreach($fileList as $file) 
    echo '<td width="25%"><img src="' . $file . '" width="100%" /></td>';
    echo '</tr>';
    echo '<tr>';
    $x = $x - 4;
    $y = $y +1; 
}
    while ($x = 5);
    } 
    while ($y <= 20);

    echo '</tr>';   
    echo '</table>';

这次它只是在每一行重新开始并为多行创建方式

4

1 回答 1

2

每次调用时,您的 foreach 循环都会重新开始。您应该放弃 do/while 循环并改用 for 循环。一个用于行,一个用于列:

$fileList = glob("./upload/*.*");
echo '<table border=1 cellspacing=1 cellpadding=2 width=100%>'

// Determine max rows:
$max_rows = ceil(count($fileList) / 4);

// Keep an index
$index = 0;

// First loop for rows
for ($row = 0; $row < $max_rows; $row++) {
    // Start a new table row
    echo '<tr>';
    // Second loop for columns
    for ($col = 0; $col < 4; $col++) {
        if ($index < count($fileList)) {
            echo '<td width="25%"><img src="' . $fileList[$index++] . '" width="100%" /></td>';
        }
        else {
           echo '<td></td>';
        }
    }
    echo '</tr>';
}
echo '</table>';
于 2013-01-22T20:30:27.157 回答