2013-05-29 5 views
1

모든 업적을 데이터베이스에 표시하여 모든 업적을 보여주는 페이지에 올리는 FOR 루프가 있습니다. 얻을 수있는 업적에는 5 가지 "유형"이 있으며 각 유형에는 자체 헤더가 있습니다. 지금 나는 단지 하나의 유형의 성취, 즉 "공통"유형을 얻으려고 노력하고 있습니다. 루프에 적합한 전용과 같이, 각 배열에 하나 개의 성과가두고있다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*/)