如何用PHP创建仅包含值为TRUE的参数的数组?
筛选POST参数中值为TRUE的元素构建数组
嘿,我懂你要实现的需求——从前端jQuery传过来的一堆参数里,只把值为TRUE的项挑出来组成新数组对吧?其实不用像你现在这样逐个变量赋值再判断,PHP里有个超好用的函数能帮你一步到位,省好多代码!
最简洁的解决方案:用array_filter()过滤数组
直接对POST过来的criteria数组做过滤就好,代码如下:
// 获取前端传过来的完整参数数组 $criteria = $_POST['criteria']; // 过滤出所有值严格等于TRUE的元素,保留原键名 $trueParameters = array_filter($criteria, function($value) { return $value === TRUE; });
代码解释
array_filter()会自动遍历数组里的每一项,把符合回调函数条件的元素保留下来,组成新数组。- 这里用
===做严格相等判断,是为了避免把类似字符串"true"、数字1这类“真值”误判进来——如果你的前端确实传的是布尔类型的TRUE,这个判断就刚好合适。
特殊情况处理:如果前端传的是字符串类型的"true"
要是你的jQuery传过来的TRUE是字符串格式(比如"true"),可以稍微修改回调函数,兼容这种情况:
$trueParameters = array_filter($criteria, function($value) { // 同时兼容布尔TRUE和字符串"true"(不区分大小写) return $value === TRUE || strtolower(trim($value)) === 'true'; });
手动判断方案(适合有特殊定制需求的场景)
如果你因为某些原因不想用array_filter(),也可以手动逐个判断添加,不过代码会繁琐一些:
$trueParameters = []; $criteria = $_POST['criteria']; if ($criteria['firstname'] === TRUE) { $trueParameters['firstname'] = $criteria['firstname']; } if ($criteria['email'] === TRUE) { $trueParameters['email'] = $criteria['email']; } // 其他参数以此类推...
内容的提问来源于stack exchange,提问作者John Beasley
相关产品推荐
相关产品推荐

