使用 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/