首页 > 解决方案 > 如何在 MySQL 查询的输出中使用 array_unique()

问题描述

我有一个相当复杂的 MySQL 调用,它会产生类似这样的简单输出;

name  timestamp             comm1 comm2 counter
Bill  2021-04-18 19:31:00   data  data  1
Bill  2021-04-18 19:32:00   data  data  2
Bill  2021-04-18 19:33:00   data  data  3
Bill  2021-04-18 19:34:00   data  data  4
Tom   2021-04-18 19:31:00   data  data  1
Tom   2021-04-18 19:35:00   data  data  2
Tom   2021-04-18 19:37:00   data  data  3
Tom   2021-04-18 19:38:00   data  data  4

...以及更多行。

使用 PHP,我想创建一个仅包含名称唯一值的数组。所以在这种情况下比尔和汤姆。我想我会使用 foreach 将 8 个名称中的每一个放入一个数组中,然后使用 array_unique 将其归结为两个。但我不清楚如何做到这一点,听起来很简单,经过各种尝试都没有奏效。

$collecting_names = array();
foreach($db_found->query($sql) as $cnrow) {
   $collecting_stations = array_unique($cnrow[name]);
}

我究竟做错了什么?

标签: phpmysqlarray-unique

解决方案


Array_unique 在您完成构建数组后应用

$collecting_names = array();
foreach($db_found->query($sql) as $cnrow) {
   $collecting_names[] = $cnrow[name];
}
$collecting_names = array_unique($collecting_names);

您也可以在添加之前检查它是否存在。

$collecting_names = array();
foreach($db_found->query($sql) as $cnrow) {
   if (!in_array($cnrow[name], $collecting_names))  $collecting_names[] = $cnrow[name];
}

推荐阅读