PHP foreach并从表行返回唯一标头

时间:2015-09-04 20:54:25

标签: php mysqli foreach

我想要发生的是......我知道如果进入了foreach,但我似乎无法开始工作。请帮我。

GDESCRIP
代码,描述
代码,描述
代码,描述
GDESCRIP
代码,描述
代码,描述
代码,描述

$query = "Select gdescrip, code, descrip from sometable group by gdescrip  order by code";
$result = $conn->query($query);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_array())
        {
            $rows[$row['gdescrip']][] = $row['code'];
        }
    foreach($rows as $key => $category)
        echo '<strong>' .$key. '</strong><br />';
    foreach($category as $item)
        {
            echo '<input type="radio" name="'.$item.'">' . $item .' </input><br/>';
        }
} 
else {
    echo "0 results";
}

2 个答案:

答案 0 :(得分:1)

您没有将$row['descrip']放入$rows。最简单的方法是向$rows添加另一个维度,并将查询返回的整行放入该维度。

while ($row = $result->fetch_array()) {
    $rows[$row['gdescrip'][] = $row;
}

第二个foreach循环需要嵌套在第一个循环中。

foreach ($rows as $key => $category) {
    echo "<strong>$key</strong><br/>";
    foreach ($category as $item) {
        echo "<input type='radio' name='{$item['code']}'>{$item['code']} {$item['descrip']}<br/>";
    }
}

并没有</input>这样的东西; <input>是自动关闭的,它不包含其他元素。

答案 1 :(得分:0)

这是我能够工作的。显然它不是mysqli但显然我只是不太了解mysqli来改变这个脚本以便它确实有效。有人请随时指出我错过了mysqli转换的地方。提前感谢您的知识。

$categories = array();
$result = select statement;
while($row = mysql_fetch_assoc($result)){
   $categories[$row['gdescrip']][] = $row;
}
foreach($categories as $key => $category){
echo '<strong>' .$key. '</strong><br/>';
foreach($category as $item){ 
    $key = str_replace(' ',"_",$key);
    echo '<input type="radio" name="'.$key.'" value="'.$item['code'].'">' .$item['code'] . $item['DESCRIP'] .  '<br/>';
 }
}