PHP三级多维数组过滤:移除指定值不匹配的元素
解决方案:过滤多维数组匹配指定值
首先,咱们可以用PHP的array_filter()函数轻松搞定这个需求,它就是专门用来根据自定义条件筛选数组元素的工具。
先模拟一个符合你描述的三级多维数组示例(方便你对应自己的实际数组结构):
$multiArray = [ [ 'extra_field' => '示例内容1', 'thwepof_options' => [ 'value' => 'Tuesday', 'label' => '周二' ] ], [ 'extra_field' => '示例内容2', 'thwepof_options' => [ 'value' => 'Monday', 'label' => '周一' ] ], [ 'extra_field' => '示例内容3', 'thwepof_options' => [ 'value' => '06-02-2018', 'label' => '2018年2月6日' ] ] ]; $order_date_value = 'Tuesday'; // 动态变量,值可能是日期字符串或星期名称
接下来用array_filter()实现过滤逻辑:
// 过滤出thwepof_options下的value与$order_date_value匹配的元素 $filteredArray = array_filter($multiArray, function($item) use ($order_date_value) { // 先判断数组键是否存在,避免结构不完整导致报错 if (isset($item['thwepof_options']['value'])) { return $item['thwepof_options']['value'] === $order_date_value; } // 键不存在的元素直接过滤掉 return false; }); // 可选:如果需要重置数组索引(array_filter会保留原索引) $filteredArray = array_values($filteredArray);
关键逻辑说明:
array_filter()会遍历数组每个元素,只保留回调函数返回true的元素;use ($order_date_value)让匿名函数能访问外部的动态变量;- 加上
isset()判断是为了让代码更健壮,避免因数组结构缺失导致的PHP警告; - 最后用
array_values()可以把过滤后的数组重新整理成连续索引的形式(如果不需要保留原索引的话)。
比如当$order_date_value是Tuesday时,过滤后的数组只会保留第一个元素;如果变量值是06-02-2018,就会保留第三个元素,完全符合你的需求~
内容的提问来源于stack exchange,提问作者DonSite
相关产品推荐
相关产品推荐

