JsonQ高级过滤实战:whereIn、whereNull与whereContains模糊查询技巧
【免费下载链接】jsonqA PHP query builder for JSON项目地址: https://gitcode.com/gh_mirrors/js/jsonq
JsonQ是一款优雅的PHP JSON查询构建器,它让开发者可以用类似ORM的方式对JSON数据进行查询过滤。本文面向PHP新手,通过whereIn、whereNull与whereContains三个高频方法,带你快速掌握JsonQ高级过滤的核心技巧,让JSON数据处理从繁琐的循环遍历中解放出来。
一、为什么需要JsonQ高级过滤?🤔
日常开发中,我们经常要处理接口返回的JSON数据:筛选某个分类下的商品、排除空值字段、模糊搜索用户名称。传统做法是写多层foreach循环加if判断,代码冗长且难以维护。而JsonQ高级过滤功能只需一行链式调用即可完成,可读性直接拉满。
JsonQ的核心源码位于 src/Jsonq.php,查询引擎则继承自 QArray,完整的API文档可参考 README.md 和 examples/ 目录下的示例文件。
二、快速入门:安装与加载数据
使用 Composer 一条命令即可完成安装:
composer require nahid/jsonq安装后,通过from()方法指定要查询的JSON数据段(本文以 examples/data.json 中的products商品列表为例),即可开始高级过滤。下面我们逐一拆解三个实战技巧。
三、whereIn:多值匹配的终极便捷写法
当你要筛选多个指定值的数据时,whereIn是最佳选择。它等价于where(key, 'in', val),参数为一个数组。
实战场景:找出商品分类cat属于 [1, 2] 的所有商品:
$res = $json->from('products') ->whereIn('cat', [1, 2]) ->get();相比用多个orWhere拼接条件,whereIn让代码更简洁、意图更清晰。它还配套了whereNotIn()反向过滤,用法完全一致,非常适合做"排除指定ID"的批量操作。
四、whereNull与whereNotNull:空值处理技巧
JSON数据中经常存在null字段,例如商品表中部分商品缺少城市字段。whereNull专门用于筛选字段值为null的记录,whereNotNull则恰好相反。
实战场景:找出city字段为空的所有商品:
$res = $json->from('products') ->whereNull('city') ->get();反向场景:找出所有已填写城市信息的商品:
$res = $json->from('products') ->whereNotNull('city') ->get();这两个方法在数据清洗、报表统计时非常实用,可以快速剔除脏数据或空记录。
五、whereContains:一行实现模糊查询
模糊查询是搜索功能的标配。whereContains会检查字段值是否包含指定子串,等价于 SQL 中的LIKE '%关键词%'。
实战场景:搜索商品名称中包含 "Macbook" 的所有商品:
$res = $json->from('products') ->whereContains('name', 'Macbook') ->get();如果你需要更精确的前缀、后缀匹配,JsonQ还提供了whereStartsWith和whereEndsWith,三者组合可以覆盖绝大多数模糊查询场景。
六、组合使用:让高级过滤威力翻倍 💪
JsonQ支持链式组合,多个条件默认按 AND 逻辑叠加,配合orWhere即可构建复杂的过滤表达式。
综合实战:筛选分类为2、城市不为空、且名称含 "Mac" 的商品:
$res = $json->from('products') ->whereIn('cat', [1, 2]) ->whereNotNull('city') ->whereContains('name', 'Mac') ->get();这种写法与Laravel Eloquent的风格高度一致,熟悉框架的开发者几乎零成本上手。
七、进阶补充:过滤后还能做什么?
JsonQ的高级过滤只是第一步,查询结果还可以继续链式调用聚合方法:sum()求和、count()计数、max()求最大值、groupBy()分组统计。例如统计过滤后商品的总价:
$total = $json->from('products') ->whereNotNull('city') ->sum('price');各聚合方法的独立示例可参考 examples/sum.php、examples/count.php、examples/group-by.php 等文件,测试用例则位于 tests/ConditionTest.php。
八、小结:三个技巧,一次掌握
| 方法 | 作用 | 适用场景 |
|---|---|---|
| whereIn / whereNotIn | 多值包含匹配 | 批量筛选ID、分类 |
| whereNull / whereNotNull | 空值判断 | 数据清洗、必填校验 |
| whereContains / whereStartsWith / whereEndsWith | 字符串模糊匹配 | 搜索、前缀后缀过滤 |
JsonQ高级过滤让PHP开发者可以用几行代码完成过去十几行的循环逻辑。现在就从from()加whereContains()开始你的第一个实验吧,你会发现查询JSON从未如此简单。🚀
【免费下载链接】jsonqA PHP query builder for JSON项目地址: https://gitcode.com/gh_mirrors/js/jsonq
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考