来自数据库结果的PHP多维数组

时间:2013-07-01 02:50:09

标签: php arrays multidimensional-array

我对多维数组有点新意,并希望看看我是否做得对。最好,为了便于使用,我想在主阵列中命名数组。

$unique_array = array(
    username=>array(),
    user_id=>array(),
    weeknumber=>array()
    );

然后我有一个while循环来检查一些数据库结果:

while($row = mysql_fetch_array($query)) //yes, I know mysql is deprecated
{
$unique_array[] = username=>$row['username'], user_id=>$row['user_id'], week number=>['weeknumber'];
}

我不确定我是否正确地在while循环中放置数组中的值,或者是否需要以其他方式完成。我无法在SO或其他地方找到任何我可以轻易理解的资源来处理多维数组中命名数组中的查询结果。

编辑后续问题:我还需要检查数组是否有重复值,因为会有多个值完全相同,但我只想要其中一个。

感谢任何帮助!

编辑解决方案:

通过修改答案,我能够创建符合我需求的代码。

数组初始化:

$unique_array = array(
    'username'=>array(),
    'user_id'=>array(),
    'weeknumber'=>array()
    );

在while循环中构建数组:

while($row = mysql_fetch_array($query))
{
$unique_array[] = array('username'=>$row['username'], 'user_id'=>$row['user_id'], 'weeknumber'=>$row['weeknumber']);
}

最后,我需要确保数组值是唯一的(由于数据库和查询限制存在重复条目),在我有while循环后:

print_r(multi_unique($unique_array));

1 个答案:

答案 0 :(得分:7)

顶级是关联数组还是数字数组?

如果它是一个关联数组,它应该有这样的结构:

$unique_array = array(
    'username'=>array('John','Mike',...),
    'user_id'=>array(1,2,3,...),
    'week_number'=>array(1,2,3,...)
);

或者如果它是一个数字数组,它应该有这样的结构:

$unique_array = array(
    array('username'=>'John', 'user_id'=>1, 'week_number'=>1),
    array('username'=>'Mike', 'user_id'=>2, 'week_number'=>2),
    array('username'=>'Sam', 'user_id'=>3, 'week_number'=>3),
    ...
)

对于第一种类型使用以下代码:

while ($row = mysql_fetch_assoc($query)) {
    $unique_array['username'][] = $row['username'],
    $unique_array['user_id'][] = $row['user_id'],
    $unique_array['week_number'][] = $row['week_number'],
}

对于第二种类型,它类似于您的代码。但是有一些语法问题:

while($row = mysql_fetch_array($query)) //yes, I know mysql is deprecated
{
    $unique_array[] = array('username'=>$row['username'], 'user_id'=>$row['user_id'], 'week_number'=>$row['weeknumber']);
}