4倍?随机图像表PHP

时间:2013-01-22 20:08:37

标签: php

所以即时尝试创建一个图像库,在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>';

这次它只是从每一行重新开始并创建到多行的方式

1 个答案:

答案 0 :(得分: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>';