2016-07-31 30 views
0

这有点混乱,很难解释,但我会尽我所能解释它。PHP:foreach中的glob与每行相乘?

基本上,我有一个图像目录(test),它包含我的产品的所有图像。

图像看起来是这样的:

999999999Image1.jpg 
999999999Image2.jpg 
999999999Image3.jpg 
999999999Image4.jpg 
999999999Image5.jpg 

555555555Image6.jpg 
555555555Image7.jpg 
555555555Image8.jpg 
555555555Image9.jpg 
555555555Image10.jpg 

etc etc... 

号码前图片是MYSQL数据库的字段名为STOCK。现在

,我试图用​​3210在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()找到的图像也被添加到下一个结果中!所以,它像第一个结果的图像被添加到下一个结果,然后第一个结果的图像和第二个结果被添加到第三个结果等等等等......

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

任何帮助,将不胜感激。

+0

把你的foreach,while循环外 – Mihai

+0

@Mihai,我不能。变量$ STOCK在while循环内部,这是我用来查找与每个产品相关的图像的图像名称的一部分。 – Jackson

+0

说...只是一个疯狂的想法,但不会'glob('test/1 *')'也找到与glob('test/11 *')'相同的图片?如果'$ STOCK'是数字,并且没有分隔符,那么这似乎是一个可能的解释。 –

回答

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

} 
+0

OMG,这样做.. My $ pic_list2 ='';在我的while循环之外,当我按照你的回答建议将它放在while循环中时,它就像一个魅力一样。 :) – Jackson

+1

@杰克逊很高兴它帮助!快乐的编码! – caramba

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