【问题标题】:Remove duplicate comma separated values from mysql [duplicate]从mysql中删除重复的逗号分隔值[重复]
【发布时间】:2020-06-27 04:50:29
【问题描述】:

如何删除从数据库返回的重复的逗号分隔值?

我有这种格式:

XL,L,XXL
XL
M,L,XL
L,XL,M

我尝试了什么:

$new_str = array_unique(array_map('trim', explode(',', $srow['size'])));
$string = implode(',', $new_str);

但我仍然得到重复的值。有没有更好的方法?

【问题讨论】:

  • 您首先用逗号将它们全部拆分,然后将每一块放入容器中,最后使用修剪和数组唯一。不要逐行进行,在容器内收集时先完成获取
  • 数据库查询中是否有机会将其删除?
  • @danblack,没有明白你从数据库查询中删除它的意思。
  • dan 表示不要在 PHP 层做唯一的,而是在 mysql 中做。如果它们不保存分隔符应该会更容易
  • 数据库中的值是否存储在逗号分隔列表中?

标签: php mysql


【解决方案1】:

由于您的数据以逗号分隔的值存储在数据库中,因此您需要在循环从数据库中获取数据时聚合所有值,然后删除重复项,例如

while ($srow = $result->fetch_assoc()) {
    $sizes[] = $srow['size'];
    // do other stuff with fetched data
    // ...
}
$sizes = array_unique(array_map('trim', explode(',', implode(',', $sizes))));
sort($sizes);
$string = implode(',', $sizes);

Demo on 3v4l.org(带模拟数据库获取)

【讨论】:

  • 感谢一百万次。对此,我真的非常感激。有效。再次感谢。
  • @FagbemiAyodele 不用担心 - 我很高兴能提供帮助。
猜你喜欢
  • 2021-11-08
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多