【发布时间】:2020-12-05 13:03:11
【问题描述】:
以下是代码
<?php
$id ="202883-202882-202884-0";
$str = implode('-',array_unique(explode('-', $id)));
echo $str;
?>
结果是
202883-202882-202884-0
对于$id ="202883-202882-202882-0";,结果是202883-202882-0
我想用零替换重复值,这样结果应该像202883-202882-0-0,而不是直接删除它。
对于$id ="202883-0-0-0";,结果应该是202883-0-0-0。零不应被替换,允许重复的零。
我该如何存档?
更多信息:
我想替换每个重复的数字。因为这是一个产品比较网站。最多只能有 4 个数字。每个将是一个 6 位数字或单个数字零。全零表示未选择任何产品。一个 6 位数字和 3 个零表示,选择一个产品和 3 个空白。
每个 6 位数字都会从数据库中收集数据,我不想让用户多次输入相同的数字(仅当数字与 URL 一起手动添加时才会发生。)。
更新:我知道我的问题不清楚,可能是我的英语很差。
这里有更多解释,这个功能是针对智能手机比较网站的。
URL 格式为sitename.com/compare.html?id=202883-202882-202889-202888。
所有三个数字都是不同的智能手机(它们的数据库产品 ID)。
我不想让用户输入相同的产品 ID,如 id=202883-202882-202882-202888。它不会在网站中显示两个202882结果,但会引起一些小问题。 URL 不变,但内部 PHP 代码应将其视为id=202883-202882-202888-0。
重复项应替换为零并添加到末尾。
将只有 4 个数字,用“-”分隔。
以下示例可能会清除云!
如果pid=202883-202882-202889-202888,结果应该是202883-202882-202889-202888
如果pid=202883-202883-202883-202888 结果应该是202888-0-0-0
如果pid=202883-202882-202883-202888 结果应该是202883-202882-202888-0
如果pid=202882-202882-202882-202882 结果应该是202882-0-0-0
我希望字符串中只允许 6 位数字或单个数字零。
如果pid=rgfsdg-fgsdfr4354-202883-0,结果应该是202883-0-0-0
如果pid=fasdfasd-asdfads-adsfds-dasfad 结果应该是0-0-0-0
如果pid=4354-45882-445202882-202882 结果应该是202882-0-0-0
这对我来说太复杂了,我知道有聪明的人可以比我更有效地做到这一点。
【问题讨论】:
-
你想替换每个重复的数字还是只替换连续的重复?
-
我也想听听皮兰的问题的回答。蒂姆的回答假设重复项总是连续的。如果它们不是连续的,蒂姆的答案会让你失望。
-
也许你们俩都应该停止多次指出同一个(可能的)边缘情况
:-) -
我认为这个问题不清楚(你可以这样投票),更像是一个 XY 问题。我在之前的评论中表达了我对数据结构的担忧。 @Funk
-
@mickmackusa 我会选择“不清楚”,但我很确定它会是锤子。无论哪种方式,我都会编辑此评论。编辑:好的,它确实采取了我不清楚的投票。但可以肯定的是,如果我投票为“不工作”,那将是一个骗局。我以前也遇到过。
标签: php