扫码关注官方订阅号
这是我的php三维数组
其中的status也就是状态,有三个等级0,1,2. 现在我想这个状态拆分成三个,分别为status0,status1,status2.他们的值就是对应相同状态的个数。合并成下面这样的一个二维数组
谢谢了,搞了好久没搞出来
学习是最好的投资!
// 空数组容器 $new_array = []; foreach( $arr as $arr_key => $arr_val) { // 变量容器 $status0 = 0; $status1 = 0; $status2 = 0; foreach( $arr_val as $_val ) { $_val['status'] == 0 && ++$status0; $_val['status'] == 1 && ++$status1; $_val['status'] == 2 && ++$status2; } // 最终输出新数组 $new_array[$arr_key] = [ 'field_name' => $_val['field_name'], 'field_id' => $_val['field_id'], 'status0' => $status0, 'status1' => $status1, 'status2' => $status2, ]; } var_dump($new_array);
坐等楼下补充
借 @pushaowei 改:
$new_array = []; foreach( $arr as $arr_key => $arr_val) { $allStatus = array_column($arr_val); $statusCounts = array_count_values($allStatus); // 最终输出新数组 $new_array[$arr_key] = [ 'field_name' => $_val['field_name'], 'field_id' => $_val['field_id'], 'status0' => isset($statusCounts['0']) ? $statusCounts['0'] : 0, 'status1' => isset($statusCounts['1']) ? $statusCounts['1'] : 0, 'status2' => isset($statusCounts['2']) ? $statusCounts['2'] : 0, ]; } var_dump($new_array);
如果可以确保数组格式如截图所述,可以用以下代码
$new_arr = []; foreach ($arr as $field_name => $list) { $new_arr[$field_name] = [ 'field_name' => $field_name, 'field_id' => $list[0]['field_id'], 'status0' => 0, 'status1' => 0, 'status2' => 0, ]; foreach ($list as $val) { $new_arr[$field_name]["status{$val['status']}"] += 1; } } var_dump($new_arr);
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
坐等楼下补充
借 @pushaowei 改:
如果可以确保数组格式如截图所述,可以用以下代码