-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>';

それは私の最初の試みであり、それは私の2番目の試みで単一の行を作成するだけです。

    //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ループを使用する必要があります。1つは行用、もう1つは列用です。

$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 に答える