2

我对多维数组有点陌生,想看看我是否做得对。最好,我想在主数组中命名数组以方便使用。

$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));
4

1 回答 1

6

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

如果它是一个关联数组,它应该具有如下结构:

$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']);
}
于 2013-07-01T03:06:24.843 回答