在php中转换数组时遇到问题

在php中转换数组时遇到问题,php,laravel,Php,Laravel,我有这个数组 [ [[222] => 1 [333] => 2 [444] => 0], [[222] => 0 [333] => 2 [444] => 1], [[222] => 1 [333] => 2 [444] => 0] ] 其中[222]、[333]、[444]是学生ID 0表示缺席 1表示出席 2意味着离开 我希望输出将 [ 'student_id' => '222' 'present' =

我有这个数组

[ 
    [[222] => 1 [333] => 2 [444] => 0],
    [[222] => 0 [333] => 2 [444] => 1],
    [[222] => 1 [333] => 2 [444] => 0]
]
其中[222]、[333]、[444]是学生ID
0表示缺席 1表示出席 2意味着离开

我希望输出将

[ 'student_id' => '222'
  'present' => 2 /* total present*/
  'absent' => 1  /* total absent*/
  'leave'  => 0 /* total leave*/
],
[ 'student_id' => '333'
  'present' => 0 /* total present*/
  'absent' => 0  /* total absent*/
  'leave'  => 3 /* total leave*/
],
等等


请给我一些php代码中的解,这看起来像是带有相应键的JSON值。您可以首先使用
foreach
在PHP数组中排列这些值,然后将该数组转换为JSON

foreach
循环是从数组访问每个键/值对的最佳方式

foreach($key=>$value){…}

foreach循环中的
$key=>$value
引用关联数组中的键值对,其中键用作确定值的索引,而不是像0,1,2,。。。在PHP中,关联数组如下所示


$featured=array('student\u id'=>'111','present'=>'2'等)

这正是你想要的,但这个网站不是一个编码服务,所以我真的认为你应该花时间了解我是如何做到的,下次尝试一些东西并在你的帖子上分享:

$array = [
    [
        "222" => 1, 
        "333" => 2,
        "444" => 0
    ],
    [
        "222" => 0, 
        "333" => 2,
        "444" => 1
    ],
    [
        "222" => 1, 
        "333" => 2,
        "444" => 0
    ]
];
$results = [];
foreach($array as $k=>$v){
    foreach($v as $id=>$value){
        if(!isset($results[$id])){
            $results[$id] = [
                'student_id' => $id,
                'present' => 0,
                'absent' => 0,  
                'leave'  => 0
            ];
        }
        if($value == 0){
            $results[$id]['absent']++;
        }
        if($value == 1){
            $results[$id]['present']++;
        }
        if($value == 2){
            $results[$id]['leave']++;
        }
    }
}
$results = array_values($results);
print_r($results);

到目前为止,您尝试了什么来解决这个问题?我不知道如何才能解决这个问题。您使用的是laravel吗?