2016-05-29 51 views
0

我很難實現這個功能,因此我想問一下。從MySQL查詢中對'PHPing'進行分組'

我有一個包含一些字段名稱的表。根據規範,表中的每個字段條目都有一個類型,一個名稱和一個ID。

我希望能夠對SQL結果進行分組,以便可以將每種類型(以及類型的關聯成員)「打印」到一張表中。我嘗試了以下方法:

$query = "SELECT id,type,opt_name FROM fields ORDER BY type"; 
$resource = $pdo->query($query); 
$results = array(); 
while ($row = $resource->fetch()) { 
$type[$row['type']] = $row['opt_name']; 
$o_id = clean($row['id'], 'text'); 
$o_name = clean($row['opt_name'], 'text'); 
} 

foreach ($type AS $o_type => $o_name) { 
    echo $o_type; 
    echo "<br>"; 

    foreach (($type) AS $opt_name) { 
     echo $opt_name; 
     echo "<br>"; 
     } 
} 

請儘量不要太擔心HTML輸出,它只是針對此示例來顯示上下文。

執行代碼時,它只會打印一行。因此,我對'print_r'進行了兩種測試:

$type[$row['type']] = $row['opt_name']; 

這確實只顯示數組中的一行。創建:

$results = $row; 

顯示所有的數據,而是太多了,而不是在我認爲會用「的foreach」的工作方式。

我可能在這裏犯了一個菜鳥錯誤,但看不到它。

幫助!

回答

1

你會被改寫$類型[「型」]的價值,而不是與推動更多的價值到它:

$type[$row['type']] = $row['opt_name']; 

您很可能希望

$type[$row['type']][] = $row['opt_name']; 

然後你需要修復你的循環,以便循環選項,而不是兩次。

foreach ($type AS $o_type => $options) { 
    echo $o_type; 
    echo "<br>"; 

    foreach ($options AS $opt_name) { 
     echo $opt_name; 
     echo "<br>"; 
    } 
} 
+0

輝煌 - 謝謝。 我曾嘗試可能每個排列,除了那個! –