2013-05-29 102 views
1

我有一個FOR循環獲取數據庫中的所有成果,將它們放在顯示所有成就的頁面上。有五種不同的「成就類型」,您可以獲得,每種類型都有自己的標題。現在我只想獲得一種類型的成就,即「普通」類型。這裏是我的代碼用於獲取的成就:FOR循環和輸出數據

$achievement_info_fetch = $db->prepare("SELECT `achievement_name`,`achievement_desc`,`image`,`type` FROM `achievement_names`"); 
$achievement_info_fetch->execute(); 
foreach($achievement_info_fetch->fetchAll(PDO::FETCH_NUM) as $achievement_info => $value){ 
    $achievement_information[$value[3]] = array('name'=>$value[0],'desc'=>$value[1],'image'=>$value[2]); 
    unset($value); 
} 

,對於循環右邊有隻把一個成果轉化爲每個陣列,像這樣:

array(5) { ["common"]=> array(3) { ["name"]=> string(11) "TrendSetter" 
["desc"]=> string(25) "Invite 6 different people" ["image"]=> 
string(23) "sm__0167_megaphone-.png" }... 

有同類型,有三種不同的成就的「共同」,正如你所看到的,就像我說的那樣,它只能得到一個,我不知道爲什麼。這可能與我把它放入數組中的方式有​​關。

之後的另一個問題是輸出信息。如果我能得到這個陣列,我應該能夠弄清楚如何做到這一點。

回答

4

確實有你如何把它在數組中要做到:

$achievement_information[$value[3]] 

這將是每次循環中達到時間覆蓋$achievement_information['common']。我不會使用數字,所以我會用字符串來寫:

if (!isset($achievement_information[$value['type']]) { 
    $achievement_information[$value['type']] = array(); 
} 
$achievement_information[$value['type']][] = array(/* your code*/)