首页 > 解决方案 > 如何在数组中检索与查询关联的其他值?

问题描述

下面的代码可以让我获取一个类别的所有子类别,但我也想在 foreach 循环中获取与它相关的其他字段,比如如果子类别是智能手机之类的产品,那么也可以获取它的价格。

如何获取其他值并在 foreach 循环中并排显示?

$query=mysql_query("SELECT * FROM thing WHERE tol_id='$bid' ORDER BY categoryname, name"); 
$categories = [];
if(mysql_num_rows($query) > 0){
    while($row=mysql_fetch_array($query)) {
        $categories[$row['categoryname']][] = $row['name'];
        $itsprice = $row['price'];
    }
}
if(!empty($categories)) {
    foreach($categories as $categoryName => $subCategories) {
        echo "<div class='stuff'>
                <p>".$categoryName."</p>
                <div id='rowstuff'>";
                if(!empty($subCategories)) {
                    foreach($subCategories as $subCategory) {
                        echo "<div id='name'>".$subCategory."</div>
                              <div id='price'>".$itsprice."</div>";
                    }
                }
        echo "</div></div>";
    }
}

上面的代码显示了最后一个子类别的价格,并且所有子类别都显示相同!

标签: phphtmlmysqlarraysfor-loop

解决方案


看看在这里添加你的代码:

while($row=mysql_fetch_array($query)) {
    $categories[$row['categoryname']][] = $row['name'];
    $itsprice = $row['price'];
}

请注意,您将元素添加到$categories数组中,但每次都覆盖$itspricevar。

您应该添加相同的数组以便稍后提取。

考虑以下更改:

while($row=mysql_fetch_array($query)) {
    $categories[$row['categoryname']][] = ["name" => $row['name'], "price" => $row['price']];;
}

后来做:

foreach($subCategories as $subCategory) {
    echo "<div id='name'>" . $subCategory["name"] . "</div>
          <div id='price'>" . $subCategory["price"] . "</div>";
}

希望这可以帮助!


推荐阅读