使用split()拆分逗号分隔字符串时出现重复值的原因
重复拆分结果的问题定位
split()方法本身无执行故障,拆分逻辑完全正确,出现重复值的核心原因是传入方法的原始字符串response2本身就存在重复拼接的内容。
具体原因拆解
1. 后端拼接逻辑存在重复执行
你使用的PHP字符串拼接代码为:
echo $Title1 . ',' . $link. ','.$value. ','.'number'.','.'$' .',';
按这个逻辑,单条正常内容应固定为5个字段段:菜品标题,跳转链接,数值,标识,货币符号,段间以逗号分隔。
对照你提供的response2实际取值可以发现:
- 同一菜品标题先后搭配两个不同的链接被重复拼入:例如"Butter cauliflower & paneer"先后拼接了link1、link2;"Butter cauliflower and coconut sambal"先后拼接了link3、link4
- 这是后端遍历数据库结果集时,同一条业务记录被重复执行了两次echo拼接操作,才形成了这种字段结构完全一致、仅链接值有微小差异的重复内容块。
2. 拆分结果与原始字符串完全匹配
逐段对应response2的内容即可验证拆分逻辑无异常:
- 从字符串开头按逗号拆分第一块,得到的5个值与控制台输出数组的索引0-4完全一致
- 紧随其后的第二块拆分得到的5个值,与控制台输出数组的索引5-9完全匹配
- 后续所有数组元素都能和原始字符串的内容一一对应,不存在split()方法乱序抓取、重复拆分的问题
3. 附带的格式异常
当前拼接代码在单条内容结尾额外多拼接了一个逗号,导致response2的末尾为friends5,$,的结构,split()执行后会在数组最后生成一个空字符串元素,属于拼接逻辑带来的附带格式问题。
内容的提问来源于stack exchange,提问作者user3500000
相关产品推荐
相关产品推荐

