у меня есть этот массив
[
[[222] => 1 [333] => 2 [444] => 0],
[[222] => 0 [333] => 2 [444] => 1],
[[222] => 1 [333] => 2 [444] => 0]
]
где [222], [333], [444] — студенческие билеты
и 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 с соответствующими ключами. Вы можете сделать это, во-первых, вы можете упорядочить эти значения в массиве PHP с помощью foreach, а затем преобразовать этот массив в JSON.
foreach цикл — лучший способ получить доступ к каждой паре ключ/значение из массива.
foreach($featured as $key => $value){...}
$key => $value в цикле foreach относится к парам ключ-значение в ассоциативных массивах, где ключ служит индексом для определения значения вместо числа, такого как 0,1,2,... В PHP ассоциативные массивы выглядят так
$featured = array('student_id' => '111', 'present' => '2', etc.);
Это делает именно то, что вы хотите, но этот сайт не является службой кодирования, поэтому я действительно думаю, что вы должны потратить время, чтобы понять, как я это сделал, и в следующий раз попробовать что-то и поделиться этим в своем посте:
$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);
Что вы пытались до сих пор решить эту проблему?