1

データベースからすべての成果を取得して、すべての成果を表示するページにそれらを配置する FOR ループがあります。取得できるアチーブメントには 5 つの異なる「タイプ」があり、各タイプには独自のヘッダーがあります。現在、「一般的な」タイプの 1 種類の成果のみを取得しようとしています。実績を取得するためのコードは次のとおりです。

$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 ループは、次のように、各配列に実績を 1 つだけ入れています。

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

「共通」のタイプには 3 つの異なる実績があり、ご覧のとおり、先ほど言ったように、取得できるのは 1 つだけであり、その理由はわかりません。おそらく、情報を配列に入れる方法と関係があります。

その後の他の問題は、情報を出力することです。このアレイを配置できれば、その方法を理解できるはずです。

4

1 に答える 1

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*/)
于 2013-05-29T23:43:14.120 に答える