javascript - php三维数组处理问题
PHPz
PHPz 2017-04-11 11:11:00
0
3
335

这是我的php三维数组

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

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

PHPz
PHPz

学习是最好的投资!

全部回复(3)
Peter_Zhu

// 空数组容器
$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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!