2017-08-30 87 views
-1
<?php 
    foreach($products as $product){ 
     //some code here , echoing products and everything works there 
     foreach($types as $type){ 
     echo $type['type']; 
     // only does the echo on the first occurence of this "types" loop 
     } 
    } 
?> 

大家好,的foreach裏面的foreach奇怪的錯誤

我正在做一個類型的表格,以便讓人們,對於數據庫的每個產品,指定產品的類型。

$產品和$類型都不同的陣列。產品包含我所有的產品,$類型包含我的所有類型。

其實我只有2種產品和2種類型。

所以,我的問題是:爲什麼回聲沒有顯示foreach($products as $product)的第二次發生,並在第一次出現時顯示出良好的結果?

這是完全相同的數組,被稱爲2次,但僅在循環的第一次出現時工作。對我來說非常奇怪。

希望你會明白,儘管我英語不好。 再見

+0

我明白你的問題。你應該做一個回聲計數($產品),以確保它有2個。也許錯誤是在此之前的代碼 –

+0

是的,其實我展示我的產品在我的網頁,在桌子上,他們是可見的。 問題是我的類型僅在第一個「產品」中可見,而不在第二個 – shqnks

+1

這意味着對於第二個元素'$ types'不是您所期望的。 '第二個'foreach'前的'var_dump($ types)'。 –

回答

1

我們假設有4種產品和7種類型。用下面的代碼執行外部循環4次和內部循環7次。打印的內容是所有7個項目的$ type ['type']的內容。而這4次。

<?php 
    foreach($products as $product){ 
     foreach($types as $type){ 
     echo $type['type']; 
     } 
    } 
?> 

你需要的是一個$產品陣列包含類型的產品,這樣就可以使用下面的代碼

<?php 
    foreach($products as $product){ 
     foreach($product->type as $type){ 
     echo $type['type']; 
     } 
    } 
?> 
0

這是因爲在第二循環,$類型仍對最後一個數組項的引用,所以每次都會覆蓋它。

你可以看到它這樣的:

$types = array ('type-one','type-two','type-three'); 

foreach ($types as $type) { 
    echo $type; 
} 

foreach ($types as $type) { 
    echo $type; 
} 

正如你所看到的,第二次調用數組。它不會迴應任何東西。

。在你的代碼中沒有「錯誤」。碰巧這樣

來解決它。您可以在第二次循環之前使用此代碼。它將重置數組引用。

reset($types); 
+0

沒有'在你的榜樣type'鍵.. –

+0

真。編輯。謝謝 –

+0

'$ type'不是對任何東西的引用。 –