You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于拆分后的分类值过滤PHP关联数组,获取含分类18的元素?

解决方案:筛选categories包含值18的数组元素

没问题,我来帮你完成这个筛选需求!你的思路方向是对的——结合array_filter和拆分字符串就能实现,下面是完整的可运行代码:

$array2 = array(
    array('customer_id' => '01', 'categories' => ''),
    array('customer_id' => '02', 'categories' => ''),
    array('customer_id' => '03', 'categories' => '20,26,18'),
    array('customer_id' => '04', 'categories' => '45,118'),
);

// 执行筛选逻辑
$filteredCustomers = array_filter($array2, function($item) {
    // 先排除categories为空的元素
    if (empty($item['categories'])) {
        return false;
    }
    
    // 将逗号分隔的categories字符串拆分为数组
    $categoryList = explode(',', $item['categories']);
    
    // 检查值'18'是否在数组中(注意这里用字符串匹配,和原数据格式保持一致)
    return in_array('18', $categoryList);
});

// 打印筛选结果
print_r($filteredCustomers);

代码说明:

  • 用array_filter遍历原数组,每个元素会传入匿名回调函数进行判断
  • 先通过empty()排除categories为空的元素,避免无效的拆分操作
  • 用explode(',', ...)把逗号分隔的字符串拆成数组,再用in_array()检查目标值是否存在

额外优化:处理可能的空格问题

如果你的categories字段可能存在空格(比如'20, 26, 18'),可以在拆分后给每个元素去掉空格,确保匹配准确:

$categoryList = array_map('trim', explode(',', $item['categories']));

运行这段代码后,你会得到仅包含customer_id为03的数组元素,完全符合你的筛选需求。

内容的提问来源于stack exchange,提问作者hakkim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:10