如何在PHP中根据对象数组的键过滤ceklis=1的数据
解决PHP数组筛选问题:保留ceklis等于1的数据
你的原始数组示例:
$item = [ 0 => [ 'ceklis' => 1, 'email' => 'john@gmail.com' ], 2 => [ 'ceklis' => 0, 'email' => 'andrew@gmail.com' ] ];
下面提供两种实现筛选的方式:
方式一:修改现有foreach循环
直接在循环里加判断条件,只保留符合要求的数据:
$data = array(); foreach($item as $value) { // 判断当前子数组的ceklis值是否为1 if ($value['ceklis'] == 1) { $data[] = array( 'ceklis' => $value['ceklis'], 'email' => $value['email'] ); } } echo "<pre>"; print_r($data); echo "</pre>";
说明:
- 循环中的
$value就是当前遍历到的子数组,直接通过$value['ceklis']取值判断即可,无需再用$item[$key] - 原来的
$n变量是多余的,$data[]会自动按顺序追加元素
方式二:用PHP内置函数array_filter更简洁
利用内置函数直接过滤数组,代码更精简:
$data = array_filter($item, function($val) { // 返回true的元素会被保留 return $val['ceklis'] == 1; }); echo "<pre>"; print_r($data); echo "</pre>";
说明:
array_filter会自动遍历数组,将回调函数返回true的元素保留到结果数组中- 这种写法省去了手动写循环的步骤,代码更高效
内容的提问来源于stack exchange,提问作者dev gomar
相关产品推荐
相关产品推荐

