这有点令人困惑且难以解释,但我会尽力解释它。
基本上,我有一个图像目录 (test
),其中包含我的产品的所有图像。
图像如下所示:
999999999Image1.jpg
999999999Image2.jpg
999999999Image3.jpg
999999999Image4.jpg
999999999Image5.jpg
555555555Image6.jpg
555555555Image7.jpg
555555555Image8.jpg
555555555Image9.jpg
555555555Image10.jpg
etc etc...
Image前面的数字是MYSQL数据库中名为STOCK
的字段。
现在,我尝试使用 glob()
来显示 mysql 数据库中每个项目的图像,如下所示:
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$STOCK = $row['STOCK'];
foreach(glob('test/'.$STOCK.'*') as $image) {
if($image != ""){
$pic_list2 .= '<img data-src="'.$image.'" class="smallImg" width="57" height="43" data-id="'.$STOCK.'" data-details="'.$ADVERT_DESCRIPTION_main.'" data-name="'.$MAKE2.' '.$MODEL2.' '.$DERIVATIVE2.'" data-price="'.$PRICE2.'" src="'.$image.'" alt="" />';
}
else{
$pic_list2 = '';
}
}
/////rest of my code..../////
}
但是,当我运行代码时,我得到一个非常奇怪的输出......
我遇到的问题是,每次输出 MYSQL 结果时,glob() 找到的图像也会添加到下一个结果中!因此,就像第一个结果的图像被添加到下一个结果,然后第一个结果和第二个结果的图像被添加到第三个结果,依此类推......
我希望这是有道理的,有人可以给我指出正确的方向。
如有任何帮助,我们将不胜感激。
最佳答案
我建议:
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$STOCK = $row['STOCK'];
$pic_list2 = ''; // you need this line also here !! only change
foreach(glob('test/'.$STOCK.'*') as $image) {
if($image != ""){
$pic_list2 .= '<img data-src="'.$image.'" class="smallImg" width="57" height="43" data-id="'.$STOCK.'" data-details="'.$ADVERT_DESCRIPTION_main.'" data-name="'.$MAKE2.' '.$MODEL2.' '.$DERIVATIVE2.'" data-price="'.$PRICE2.'" src="'.$image.'" alt="" />';
}
else{
$pic_list2 = '';
}
}
/////rest of my code..../////
}
关于PHP:foreach中的glob与每一行相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687114/