84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
这是我的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);
坐等楼下补充
借 @pushaowei 改:
如果可以确保数组格式如截图所述,可以用以下代码