2011-07-12 112 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);