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

Rob*_*bya 2 php arrays multidimensional-array

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

$unique_array = array(
    username=>array(),
    user_id=>array(),
    weeknumber=>array()
    );
Run Code Online (Sandbox Code Playgroud)

然后我有一个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'];
}
Run Code Online (Sandbox Code Playgroud)

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

编辑跟进问:我还需要检查数组重复的值,因为这里将是完全相同的多个值,但我只想要其中的一个.

任何帮助表示赞赏!

编辑解决方案:

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

数组初始化:

$unique_array = array(
    'username'=>array(),
    'user_id'=>array(),
    'weeknumber'=>array()
    );
Run Code Online (Sandbox Code Playgroud)

从while循环中构建数组:

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

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

print_r(multi_unique($unique_array));
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

$unique_array = array(
    'username'=>array('John','Mike',...),
    'user_id'=>array(1,2,3,...),
    'week_number'=>array(1,2,3,...)
);
Run Code Online (Sandbox Code Playgroud)

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

$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),
    ...
)
Run Code Online (Sandbox Code Playgroud)

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

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'],
}
Run Code Online (Sandbox Code Playgroud)

对于第二种类型,它就像你的代码.但是有一些语法问题:

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']);
}
Run Code Online (Sandbox Code Playgroud)