PHP中合并多数组值提取主题唯一分类的代码问题排查
问题定位
- 变量名冲突:循环外
$array存储的是JSON解码后的全量数据,循环内部重新给$array赋值覆盖了原始数据,直接破坏了循环的数据源 array_push用法错误:array_push的第一个参数是要插入元素的目标数组,第二个是待插入的内容,你写反了两个参数的位置;且array_push返回值是数组新的长度,直接赋值给$categories会导致存储分类的数组被数字覆盖- 去重逻辑错误:当前仅对单个主题的分类做去重,没有对所有收集到的全局分类做去重,无法过滤不同主题之间的重复分类
- 冗余代码:
explode返回的本身就是索引数组,array_values调用无意义
正确实现代码
$json = $this->curl_get_marketplace_contents(); $origin_data = json_decode($json, true); $categories = array(); foreach ($origin_data['themes'] as $theme) { // 拆分单主题分类并去除空格 $theme_cats = array_map('trim', explode(",", $theme['categories'])); // 合并到全局分类数组 $categories = array_merge($categories, $theme_cats); } // 全局去重后重置索引 $categories = array_values(array_unique($categories)); return $categories;
执行后返回的结果为:["Creative", "Portfolio", "One-Page", "Multipurpose", "Business", "Landing Page"]
内容的提问来源于stack exchange,提问作者Hans Desjarlais
相关产品推荐
相关产品推荐

