繁体   English   中英

在PHP中转换数组时遇到麻烦

[英]having trouble in transforming a array in php

我有这个数组

[ 
    [[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代码的解决方案

这确实可以满足您的要求,但是此站点不是编码服务,因此我真的认为您应该花时间了解我的工作方式,然后下次尝试一些操作并在您的帖子上分享:

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

这看起来像带有相应键的JSON值。 您可能首先要做的是,可以使用foreach在PHP ARRAY中安排这些值,然后在JSON中转换该数组。

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

foreach($featured as $key => $value){...}

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

$featured = array('student_id' => '111', 'present' => '2', etc.);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM