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

PHP中使用array_filter时,无匹配值如何返回原数组?

解决array_filter无匹配时返回原数组的问题

你直接修改array_filter的回调函数是行不通的,因为array_filter的回调只能返回布尔值(true/false),用来决定当前元素是否被保留,没法直接返回整个数组。正确的做法是先执行过滤,再判断过滤结果是否为空,为空就替换成原数组。

修改后的代码如下:

// $Myitems 是目标数组
$make = '3';
// 执行原有过滤逻辑
$MyfilterMain = array_filter($Myitems, function($item) use($make) {
    $extra_fields_decode = json_decode($item['extra_fields'], true);
    $main_value = $extra_fields_decode['1']['value'];
    return $main_value == $make;
});

// 过滤结果为空则返回原数组,否则保留过滤结果
$MyfilterMain = empty($MyfilterMain) ? $Myitems : $MyfilterMain;

补充说明:

  • 把回调函数的参数名从$Myitems改成了$item,避免和外部的数组变量重名,代码更清晰规范。
  • 用empty()判断过滤后的数组是否无元素,为空时就将原数组赋值给$MyfilterMain,这样后续的array_slice等操作可以直接使用这个变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:09:11