PHP:foreach中的glob与每行相乘?

时间:2016-07-31 18:24:10

标签: php mysql

这有点令人困惑,难以解释,但我会尽力解释。

基本上,我有一个图像目录(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()找到的图像也被添加到下一个结果中!因此,它就像第一个结果的图像被添加到下一个结果,然后第一个结果的图像和第二个结果被添加到第三个结果,依此类推......

我希望这是有道理的,有人可以指出我正确的方向。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我建议:

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..../////

}

答案 1 :(得分:0)

这个怎么样?这会为每个mysql输出创建一个新的数组键。

<?php
$i = 0;
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){

    $STOCK = $row['STOCK'];

    foreach(glob('test/'.$STOCK.'*') as $image) {   

        if($image != ""){
            $pic_list2[$i] .= '<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[$i] = ''; 
        } 
    }
    $i++;
    /////rest of my code..../////
}
?>