PHP数组处理:将产品ID转换为出现次数统计数组
实现热门产品ID计数的可行方案
嘿,这需求我熟!你已经拿到了包含热门产品ID的对象数组,要统计每个ID的出现次数来找出最热门产品,思路完全没问题——合并数据再计数就行,给你一套PHP的具体实现方案:
核心实现步骤
- 拆分并收集所有产品ID:遍历原始数组,把每个对象里逗号分隔的ID字符串拆成单个ID,合并到一个一维数组中
- 统计ID出现次数:用PHP内置函数快速完成计数
- 按热度排序(可选):把统计结果按出现次数降序排列,让热门产品排在最前面
完整代码示例
// 你的原始产品ID数组 $originalProducts = [ (object)['popular_product' => '2,60'], (object)['popular_product' => '12,61,60'], (object)['popular_product' => '2'], (object)['popular_product' => '9'], (object)['popular_product' => '14'], ]; // 1. 收集所有单个产品ID $allIds = []; foreach ($originalProducts as $item) { // 拆分逗号分隔的ID,同时处理可能存在的空格(可选) $ids = array_map('trim', explode(',', $item->popular_product)); $allIds = array_merge($allIds, $ids); } // 2. 统计每个ID的出现次数 $countResult = array_count_values($allIds); // 3. 按出现次数降序排序,保持ID与次数的对应关系 arsort($countResult); // 输出最终统计结果 print_r($countResult);
代码解释
explode(',', $item->popular_product):把每个对象里的ID字符串拆成数组,比如'2,60'会变成['2', '60']array_map('trim', ...):如果你的ID字符串里可能有空格(比如'2, 60'),这一步可以帮你去掉空格,避免统计错误array_count_values():PHP内置的计数函数,直接返回一个以ID为键、出现次数为值的数组,省心又高效arsort():按值从大到小排序,并且保留键名,这样你能直接看到哪个ID最热门
运行这段代码后,你会得到这样的结果:
Array ( [60] => 2 [2] => 2 [12] => 1 [61] => 1 [9] => 1 [14] => 1 )
这样就能清晰看到每个产品ID的热门程度啦!
内容的提问来源于stack exchange,提问作者user779681
相关产品推荐
相关产品推荐

