-3

私のmysqlデータベースは、私がこのループで立ち往生している画像名の配列を出力します

  <?php foreach ($newarrivaldata as $row){ ?>
       <?php echo $row['imgfile'].'<br/>';?>
  <?php }?>

$newarrivaldata には 18 個の画像ファイルがあり、このように表示するにはどうすればよいですか?

<div id='page1'>    img1    img2    img3    img4    img5    </div>

<div id='page2'>    img6    img7    img8    img9    img10    </div>

<div id='page3'>    img11    img12    img13    img14    img15    </div>

<div id='page4'>    img16    img17    img18                    </div>

更新: var_dump($newarrivaldata)

array
  0 => 
    array
      'idvehicle' => string '970' (length=3)
      'name' => string 'Toyota RX400' (length=12)
      'imgfile' => string '12122809355412.jpg' (length=18)
      'imgtype' => string 'coverimg' (length=8)
  1 => 
    array
      'idvehicle' => string '972' (length=3)
      'name' => string 'asd' (length=3)
      'imgfile' => string '12122815555612.jpg' (length=18)
      'imgtype' => string 'coverimg' (length=8)

  ....upto 17=>
4

2 に答える 2

1

の出力を含めるように質問を更新できますか

print_r($newarrivaldata);

テーブルを逐語的に出力するだけの場合 (i=0、行と列で始まるようにすべてをリセットすることをお勧めします。1 ではなく、常に 0 で開始するため、page0、img0 など):

$numColumns = 5;
for($row=0; $row<ceil(count($newarrivaldata)/$numColumns); $row++){
   echo "\n<div id='page$row'>";
   for($c=0; $c<$numColumns; $c++){
      if(isset($newarrivaldata[$row+$col])){
         echo '<img src="'.$newarrivaldata[$row+$col]['imgfile'].'" />';
      }
   }
   echo "</div>"
}

私が行ったことは、配列を取得して 5 行に分割することですが、$numColumns を別の値に変更すると、それが $numColumns 列の行に分割されます。count($newarrivaldata)/$numColumns) を取らなければならなかった理由は、配列が $numColumns の正確な倍数でない場合、PHP から警告が表示されるため、それを回避しようとしているだけです。

于 2012-12-29T10:28:54.577 に答える
0

この方法を試してみてください。これが出発点になります

<?php
$newarrivaldata = array("one", "two", "three", "four","five","six","seven","eight","nine","ten","elevn","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighten"); 
 $key=1;
foreach ($newarrivaldata as $row){ 
      echo $row."&nbsp;&nbsp;";
     if($key%5 == 0) echo "<br/>";
    $key++;
  }?>

ワーキングデモ

于 2012-12-29T10:29:07.090 に答える