我对多维数组有点陌生,想看看我做的是否正确。最好,我想在主数组中命名数组以便于使用。
$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));
最佳答案
顶层是关联数组还是数值数组?
如果它是一个关联数组,它应该有这样的结构:
$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']);
}
关于来自数据库结果的 PHP 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396831/