mysql和php关联数组

时间:2011-07-12 19:49:40

标签: php mysql

我有这张桌子:

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。

3 个答案:

答案 0 :(得分:4)

容易腻......

$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,您将看到您定义的结构。

答案 1 :(得分:2)

假设您的初始数组位于$ data中,例如

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

你可以选择

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

答案 2 :(得分:0)

您可以通过返回的结果以编程方式构建它...裸骨示例:

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


print_r($ar);