我有一个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);
}
那个FOR循环只在每个数组中放入一个成就,如下:
array(5) { ["common"]=> array(3) { ["name"]=> string(11) "TrendSetter"
["desc"]=> string(25) "Invite 6 different people" ["image"]=>
string(23) "sm__0167_megaphone-.png" }...
“共同”类型有三种不同的成就,你可以看到,就像我说的那样,只有一个,我不知道为什么。它可能与我将信息放入数组的方式有关。
之后的另一个问题是输出信息。如果我可以将这个数组放在那里,我应该能够弄清楚如何做到这一点。
答案 0 :(得分: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*/)