2013-07-05 77 views
1

我不是一個高級的PHP編碼器,所以我需要一些幫助。PHP foreach多個結果

我試圖用指向完整圖像和thumnail的鏈接來回顯列表項。

這是期望的結果:

<li> 
    <a href="fullimagepath1"> 
     <img src="thumnailpath1" /> 
    </a> 
</li> 
<li> 
    <a href="fullimagepath2"> 
     <img src="thumnailpath2" /> 
    </a> 
</li> 
<li> 
    <a href="fullimagepath3"> 
     <img src="thumnailpath3" /> 
    </a> 
</li> 
... 

這是我使用

<?php 
     $images = rwmb_meta('product_gallery', 'type=image&size=press-thumb'); 
    $fullimages = rwmb_meta('product_gallery', 'type=image&size=productfull-thumb'); 
      foreach ($fullimages as $fimages) 
      foreach ($images as $image) 
       { 
        echo "<li><a class='thumb' href='{$fimages['url']}'><img src='{$image['url']}' /></a></li>"; 

    } ?> 

該問題的代碼是我得到的縮略圖,而是由真實結果的數量乘以。如果我有3個縮略圖我的畫廊結果將是9個縮略圖,如果我有5個將獲得25

我怎樣才能修復代碼? 在此先感謝!

+0

你可以顯示$圖像和$ fullimages包含什麼? – sectus

回答

1

這是因爲這條線foreach ($fullimages as $fimages)這是觸發內循環。

因爲你很可能有3個圖像和兩個數組持有三項數組,循環將運行3次大循環也將執行3次內。所以你有9個項目。

在你的代碼

foreach ($fullimages as $fimages) //Because of this loop next statement executes 
foreach ($images as $image) { 
    echo "<li><a class='thumb' href='{$fimages['url']}'><img src='{$image['url']}' /></a></li>"; 
} 

你可能想什麼?

foreach ($fullimages as $k => $fimages) { 
         //^Get the index of the array 
    echo "<li><a class='thumb' href='{$fimages['url']}'> 
     <img src='{$images[$k]['url']}' /></a></li>"; 
         //^Use that key to find the thumbnail from $images array 
} 
+0

謝謝Starx!它正在工作!我會試着去了解它是如何深入的。 – user2553099

+0

@ user2553099,讓我知道,如果你有問題:) – Starx

0

試試這個代碼

foreach ($fullimages as $fimages) 
{ 
    foreach ($images as $image) 
       echo "<li><a class='thumb' href='{$fimages['url']}'><img src='{$image['url']}' /></a></li>"; 

} ?> 
+0

感謝薩蒂亞,我試過,之前並沒有工作。 – user2553099

0

你可以使用for和迭代

for ($i=0;$i<count($images);$i++){ 
    echo $images[$i]['url'], $fullimages[$i]['url']; 
} 

或者使用array_map

array_map(function($image, $fullimage){ 
    echo $image['url'], $fullimage['url']; 
}, $images, $fullimages); 
0

我建議存儲這樣的圖片:

$images = array(
'fullpath' => '...' 
'thumbpath' => '...'  
) 

而不是兩個單獨的陣列。並只在一個數組上循環。

或使用迭代器等next($array)current($array)功能以同時在兩個陣列迭代。