【发布时间】:2022-01-14 23:27:10
【问题描述】:
我有一个数据库选择查询,它从多行的列中返回逗号分隔的结果列表,并且代码过滤了重复的字符串,效果很好。
但是,我想限制从 array_unique 返回的字符串数量 - 因为我不能使用典型的 ++counter 并打破这个过滤器,所以我不知道如何只返回 5例如字符串而不是整个过滤后的数组(返回大约 300 个唯一字符串)。
我写的:
foreach ($tags as $row) {
$filter = array_unique($row);
foreach (explode(',', trim($sep['tags'])) as $tag) {
printf('<span>%s</span>', strip_tags($tag));
}
}
我试过了
$filter = array_unique($row);
$sep = array_slice($filter, 0, 5);
foreach (explode(',', trim($sep['tags'])) as $tag)
...
这只是再次返回 300 行。我怎样才能做到这一点?
谢谢!
【问题讨论】:
-
你为什么要那样做?它根本没有效果......你只想返回前5个或随机5个或5个最常见的还是什么?数据库是否包含多行,其中包含由逗号分隔的多个标签,或者每个标签都在不同的行中?如果是第一个,这不是存储标签的正确方法
-
我想要前 5 行,允许用户单击“查看更多...”,这会加载更多结果 - ajax。每个数据库行包含超过 2 个相同的字符串 - 但每行有大约 4 个逗号分隔的字符串,但是它选择大约 2000 行的查询,从查询中产生过滤的 300 个结果。我知道这不是方式,但这是我们的方式,直到我们将这些移动到具有 2 之间的关系链接的表。
-
我觉得这个问题的根本原因可能是糟糕的数据库设计。这并不完全清楚,但听起来您可能在同一个字段中存储了多个值?我认为这将有助于我们获得一些样本数据并查看您的查询,以便我们更清楚地了解整体情况
标签: php arrays database string loops