php三维数组处理问题

这是我的php三维数组

clipboard.png

其中的status也就是状态,有三个等级0,1,2. 现在我想这个状态拆分成三个,分别为status0,status1,status2.他们的值就是对应相同状态的个数。合并成下面这样的一个二维数组

clipboard.png

谢谢了,搞了好久没搞出来

阅读 3k
3 个回答

如果可以确保数组格式如截图所述,可以用以下代码

$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);

// 空数组容器
$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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题