php - 尝试从数组中删除重复的行。到栏目内容

标签 php mysql sql arrays duplicates

使用 PHP 并从数据库进行 SELECT 查询,我得到了我不喜欢的输出。

我是这样开始的:

$details = Db::getInstance()->executeS($sql);

经过一段时间后我得到了

echo json_encode($details);

出于调试目的:

[{"email":"test@on.gr","lastname":"TEST","firstname":"TEST1","id_lang":"1","id_order":"1"}]   
[{"email":"test@on.gr","lastname":"OTHER","firstname":"DIFFERENT","id_lang":"1","id_order":"2"}]
[{"email":"test@on.gr","lastname":"THIRD","firstname":"DIFFERENT","id_lang":"1","id_order":"3"}]
[{"email":"new@on.gr","lastname":"THIRD","firstname":"NEW","id_lang":"1","id_order":"4"}]

我想要的是转换数组 $details 以检查每个“行”,如果电子邮件列在整个输出中具有唯一值。如果是,则删除包含重复条目的行,只保留包含重复条目的第一行。

所需输出:

[{"email":"test@on.gr","lastname":"TEST","firstname":"TEST1","id_lang":"1","id_order":"1"}]
[{"email":"new@on.gr","lastname":"THIRD","firstname":"NEW","id_lang":"1","id_order":"4"}]

(如您所见,id 顺序为 2 和 3 的行已被删除,因为它们与第一行具有相同的电子邮件)

任何形式的帮助都将受到高度赞赏。

最佳答案

编辑:只是想在这里补充一下,我的代码不是 PHP 代码。你必须改变它。

在 select 语句中执行 ORDER BY email 命令。 伪代码:

循环结果:

String email1 = "";
String email2 = "";
for (i=0;i<(Detailssize); i++){

  email2 = details[email][i]; //Do whatever you need to do to access the value of the email key here.
  if(email2 != email1){
      KEEP IT
  }
  else{
   THROW AWAY
  }
  email1 = email2;

}

显然这不是 PHP。自从我编写 php 代码以来已经有一段时间了。尽管如此,从逻辑上讲,这应该仍然有效。我确信有一种方法可以将您的 SELECT 语句更改为仅从每个值返回一个值,但我在 SQL 方面还不够擅长。这不是一个很好的解决方案,但希望它有所帮助。

关于php - 尝试从数组中删除重复的行。到栏目内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878622/

相关文章:

php - 如何比较不同格式的地址(php/mysql)

mysql - Rails 事件记录订单问题

sql - 使用CTE相互计算多列

php - 如何将图像数据从一张表移动到另一张表?

php - 当评论作者与帖子作者匹配时,Wordpress 有条件地加载类

php - 在一行中将数​​组插入数据库

mysql - MariaDB中的SQL如何使用2列中的数据从另一列中选择值?

sql - 在 Oracle10g 中有条件地选择多个列

php - 在 UNIX/linux 服务器中自动运行 shell 脚本

php - 对于从日期字符串 PHP MySQL 开始的每个新年