背景:我正在查询数据库以返回指定数量的怪物,这些怪物将在一个简单的基于网络的 RPG 中用于战斗。
问题:我有一个简单的 MYSQL 查询,其中包含一个 WHERE 子句来确定怪物的“级别”。在之前的函数中,我正在构建一个数组,其中包含应返回的相应怪物的级别;就像是:
$levels = Array( [0] => 3 [1] => 1 [2] => 1 )
所以在上面的数组中,Value对应的是level。所以我希望返回 3 个怪物——3 级、1 级和 1 级。
很简单。现在我想用以下内容查询 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,但我需要怪物与前面的数组显示的内容相对应。
有道理?帮助总是受到赞赏。