1

PHP で次のような多次元配列を生成しようとしています。

$books =  array(

    "8" => array(   "my girl" => 2.5, 
                    "the god delusion" => 3.5,
                    "tweak" => 3, "the shack" => 4,
                    "the birds in my life" => 2.5,
                    "new moon" => 3.5),

    "14" => array(    "the last lecture" => 2.5, 
                      "the god delusion" => 3.5,
                      "the noble wilds" => 3, "the shack" => 3.5,
                      "the birds in my life" => 2.5, "new moon" => 1)
     );

このようなデータベーステーブルから:

ID  value   title
------------------------------------------------------------------
8   5   Clara Callan
8   5   Where You'll Find Me: And Other Stories
8   5   The Middle Stories
8   5   Jane Doe
8   6   The Witchfinder (Amos Walker Mystery Series)
8   6   More Cunning Than Man: A Social History of Rats an...
8   7   Goodbye to the Buttermilk Sky
9   6   Beloved (Plume Contemporary Fiction)
12  10  If I'd Known Then What I Know Now: Why Not Learn f...
14  5   Mary-Kate & Ashley Switching Goals (Mary-Kate ...
14  5   Tell Me This Isn't Happening
14  6   Flood : Mississippi 1927
16  9   Airframe
17  7   Death in the Clouds
17  5   Bant/Spec.Last of the Breed
17  6   Piercing the Darkness
17  3   Prophet
19  7   Prague : A Novel

私はすでにいくつかの方法を試しましたが、その方法を正確に理解することはできません。私はここで数多くのスレッドを検索してきましたが、まだ誰もこれについて議論していません. 私はPHPの初心者なので、PHPの配列の概念をあまり理解していません。現在、私のPHPコードは次のようになっています:

        $result = mysql_query($mySelectQuery) or die("<br/><br/>".mysql_error());
        $books = array();
        while ($row = mysql_fetch_array($result)) 
        {
            $userID = $row{'User-ID'};
            $books[$userID] = array($row{'Book-Title'} => $row{'Book-Rating'},);
        }

そのコードはすでに「欲しいもの」で同様の結果を生成していますが、それでも既存の本のレコードを置き換えているため、最終的にすべてのユーザーは配列に 1 つの本のレコードしか持ちません。私の質問は:

私のようにフォーマットされた多次元配列にクエリの結果を入力するにはどうすればよいですか?

ご回答ありがとうございます。そして下手な英語でごめんなさい。

4

3 に答える 3

1

試す:

$result = mysql_query($mySelectQuery) or die("<br/><br/>".mysql_error());
    $books = array();
    while ($row = mysql_fetch_array($result)) 
    {
        $userID = $row{'User-ID'};
        $books[$userID][$row{'Book-Title'}] = $row{'Book-Rating'};
    }

これにより、本のタイトルが配列のキー/インデックスとして割り当てられ、評価がその値として設定されます。

于 2013-03-12T18:17:31.557 に答える
0

ループの前に次を追加します。

$books[$userID] = array();

ループ内で次を使用します。

$books[$userID][] = array($row{'Book-Title'} => $row{'Book-Rating'},);

于 2013-03-12T18:17:31.520 に答える
0

これを試してください:

$books[$userID][] = array($row{'Book-Title'} => $row{'Book-Rating'},);

于 2013-03-12T18:17:43.007 に答える