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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:47:26