PHP数组去重异常:使用array_unique仍出现重复结果求助
数组去重后重复输出的问题排查
嘿,我来帮你捋捋这个问题!你遇到的两次相同数组输出,根本不是array_unique()的问题,核心原因是你的这段代码被执行了两次。
先看你贴的代码:
$input = explode(' ', $term_single->name); $result = array_unique($input); print_r($result);
以及实际输出:
Array ( [0] => QA ) Array ( [0] => QA )
为什么会出现这种情况?
- 首先,
$term_single->name的值看起来就是"QA",按空格分割后数组只有一个元素["QA"],array_unique()处理后自然还是这个数组。但你看到两次输出,说明这段print_r代码被触发了两次。 - 常见的触发场景包括:
- 这段代码被放在了循环(比如WordPress的术语循环)里,循环跑了两次,且两次处理的是同一个term对象
- 你在代码里不小心复制了两遍这段逻辑
- 对应的框架钩子(如果是在CMS里)被重复触发了两次
怎么验证和解决?
- 先加个调试标记,确认代码执行次数:
如果看到两次“代码执行了一次”,那就实锤是代码被执行两次了。echo "代码执行了一次<br>"; $input = explode(' ', $term_single->name); $result = array_unique($input); print_r($result); - 检查代码上下文:看看这段代码是不是在
foreach循环里?或者是不是绑定了会触发多次的事件/钩子? - 可以打印
$term_single的完整信息,确认是不是处理了同一个对象:
如果输出两个相同的term对象,那就是遍历逻辑的问题,需要调整循环条件或者范围。var_dump($term_single);
内容的提问来源于stack exchange,提问作者Petrit
相关产品推荐
相关产品推荐

