我正在尝试为游戏制作工艺计算器。
我有一个看起来像这样的数据库:
工艺品:
id item_id item_name amount
3 1895 a 5
8 2486 c 1
工艺材料:
id craft_id item_id item_name amount
1 3 2486 c 15
2 3 5302 d 23
3 3 5698 e 2
4 8 2014 f 3
这是我的查询以检索数据:
$craftProduct = $db->query("SELECT * FROM crafts WHERE item_id=$item");
$craftProduct->setFetchMode(PDO::FETCH_OBJ);
$product = $craftProduct->fetch();
$craftID = $product->id;
$craftMaterial = $db->query("SELECT * FROM craft_materials WHERE craft_id=$craftID");
$craftMaterial->setFetchMode(PDO::FETCH_OBJ);
echo '<ul>';
echo '<li>'.$product->item_name.' ('.$product->amount.')</li>';
echo '<ul>';
while($material = $craftMaterial->fetch()){
echo '<li>'.$material->item_name.' ('.$material->amount.')</li>';
}
echo '</ul>';
echo '</ul>';
我要做的是获取材料ID,并检查它是否与工艺相对应。如果是这样,我想展示制作所需的材料。
我想要看起来像这样的东西:
- a (5)
- c (15)
- f (3)
- d (23)
- e (2)
但是,我不知道如何进行循环。谁能帮我?
最佳答案
这是基本的递归设置:
function render_item($item_id) {
$product = fetch_item($item_id); // select from crafts where item_id = $item_id
$children = "";
foreach (fetch_children($product->id) as $child_id) { // select from craft_mats where craft_id = $product->id
$children .= render_item($child_id);
}
echo "<li>" . $product->item_name . "<ul>" . $children . "</ul></li>";
}
echo "<ul>" . render_item(1895) . "</ul>"
关于php - 工艺计算器循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25769727/