2012-04-30 124 views
0

存儲在$g結果爲1和2,下面的代碼我已經寫在下面,我$array['music']僅存儲爲2,但我要的是執行的最後一個元素我SQL查詢下的foreach 2倍和匹配的$g這是圖1和2與mu_id的值(mu_id是從另一個表music列名)和行1和2中的所有行的數據存儲在給$array['music']陣列是由最後一個元素在PHP覆蓋

它僅存儲用於第二行(2)不爲1時,或者爲內部循環的第二次執行它是覆蓋它。如果有任何邏輯可以使其發揮作用,請讓我知道。

foreach($genre as $g) 
    { 
     echo $g; 
     echo "<br>"; 
     $array['music'] = $m -> where('mu_id', $g) -> get(); 
    } 
+0

什麼是$ g的數據?什麼是$ m?給你的變量適當的名字,所以他們更容易遵循。我們不需要再次學習我們的ABC。 –

+0

@Truth:CI Datamapper文檔在其所有示例中都使用單字母變量,因此這可能只是複製這些示例。我同意這是一個壞習慣,但在這種情況下,我會假設'$ g'是「流派」,'$ m'是「音樂」。我也只會用完整的單詞。 –

+0

@madmartigan我很清楚這一點。我只是說他不應該自己做,也不要盲目複製實例而不理解數組的基礎知識。 –

回答

6

你重新聲明每次整個數組而不是增加了,而是使用此:

foreach($genre as $g) 
{ 
    $array['music'][] = $m->where('mu_id', $g)->get(); 
} 

甚至更​​好,更少的查詢:

$array['music'] = $m->where_in('mu_id', $genre)->get(); 
+0

非常感謝。由於我是codeigniter和datamapper的新手,我想知道如何使它工作。這對我來說很神奇。我非常高興,因爲這現在完美地工作。什麼是快速回復!再次感謝...... :) –

+1

CI和DM都有非常好的文檔,請務必經常閱讀。也就是說,這只是一個基本的PHP錯誤,PHP也有非常好的文檔,請確保經常引用它們。 –

0

如果你想存儲陣列中的全部,你應該使用$array['music'][]代替$array['music']