2011-07-12 115 views
1

我有這個表:MySQL和PHP關聯數組

Username,  Fan,  Count 
1danny22,  katana1973, 2 
bob,   rita,  2 
mattyhacky, hayley,  2 
mattyhacky, dickie1eye, 1 
mattyhacky, xxjodiexx, 1 

而且我希望將其加載到一個關聯數組,這將是這樣的:

Array ( 
    [1danny22] => Array (
     [katana1973] => 2, 
    ), 
    [bob] => Array (
     [rita] => 2, 
    ), 
    [mattyhacky] => Array (
     [hayley] => 2, 
     [dickie1eye] => 1, 
     [xxjodiexx] = > 1, 
    ) 
) 
 

$strSQL = "SELECT username, fan, count(*) AS intCount 
FROM fan 
GROUP BY username, fan    
ORDER BY username, intCount DESC"; 

$strResult = mysql_query($strSQL); 
while($objRow=mysql_fetch_object($strResult)) 
{ 
    code should go in here!!! 
} 

但我真的很掙扎。

有人可以幫忙嗎?

非常感謝

TheBounder。

+0

掙扎着什麼?你試過什麼了? –

回答

4

易peasy ...

$sql = "SELECT Username, Fan, Count FROM datatbl"; 
$res = mysql_query($sql); 

while ($row = mysql_fetch_object($res)) 
    $data[$row->Username][$row->Fan] = $row->Count; 

我進一步解釋。你在這裏做的是爲你的數據數組創建一個基本索引,它使用普通的關聯用戶名作爲索引。在該索引中,您有另一個數組,這使用Fan作爲索引,每個項目的值都是計數。我上面的例子是構建您正在查看的結構的最簡單方法。

現在,如果您在陣列上運行print_r,您將看到您定義的結構。

2

假設您最初的陣列在$的數據,與例如

$data[0] = array("1danny22", "katana1973", 2); 

你可以用

$output = array(); 
foreach($data as $line) { 
    $output[$line[0]][$line[1]] = $line[2]; 
} 
0

去你可以從返回的結果以編程方式構建它... ...光禿禿的骨頭例如:

$ar = array(); 
$result = mysql_query("SELECT * FROM your_table"); 
while ($ar[] = mysql_fetch_assoc($result)); 


print_r($ar);