コンテキスト:データベースにクエリを実行して、単純な Web ベースの RPG 内での戦闘で使用される指定された数のモンスターを返しています。
問題:モンスターの「レベル」を決定するための WHERE 句を含む単純な MYSQL クエリがあります。前の関数で、返す必要がある対応するモンスターのレベルを含む配列を作成しています。何かのようなもの:
$levels = Array( [0] => 3 [1] => 1 [2] => 1 )
したがって、上記の配列では、Value はレベルに対応します。なので、レベル3、レベル1、レベル1の3体のモンスターを返そうと思っています。
十分に単純です。次に、次のように MYSQL をクエリし、おそらくループを使用してクエリを 3 回実行し、3 つのモンスターを取得します。何かのようなもの:
$query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP";
$query .= " FROM Cards";
$query .= " WHERE CardTypeId = 1 AND CardRarity = {$level}";
$query .= " ORDER BY RAND() LIMIT 1";
したがって、上記のクエリでは、変数 {$level} は前の配列のモンスター レベルです。ループのフォーマットは、私が苦労しているところです。私は次のようなことを試みています:
while ($i = $levels) {
$query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP";
$query .= " FROM Cards";
$query .= " WHERE CardTypeId = 1 AND CardRarity = {$i}";
$query .= " ORDER BY RAND() LIMIT 1";
$result_set = mysql_query($query, $connection);
confirm_query($result_set);
return $result_set;
}
これは近いと思いますが、最終的に MYSQL から単一のモンスターの配列を得るためにこれを取得する方法がわかりません。上記のようですが、3つの別々の配列を構築していますか? array_merge() を使用する必要がありますか、またはこれを行うためのよりシンプルでエレガントな方法はありますか? 同じレベルのモンスターをすべて取得する場合は、クエリを 1 回実行して LIMIT 3 にするだけで済みますが、前の配列が示すものに対応するモンスターが必要です。
理にかなっていますか?ヘルプはいつでも大歓迎です。