2013-05-29 66 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*/)