我在数据库中有一个像底部的表格
课程
ICDL 1
ICDL 1
ICDL 0
3DMAX 1
自动猫咪1
autocad 0
我想显示这样的日期表。
课程 通话 注册
ICDL 2 1
3DMAX 1 1 0
autocat 1 1
我想删除重复课程。 我也想加上她的课程名称的状态
请帮助我
答案 0 :(得分:1)
这将是直接的方法:
<?php
$input = [
[
'course' => 'ICDL',
'statuse' => 1,
],
[
'course' => 'ICDL',
'statuse' => 1,
],
[
'course' => 'ICDL',
'statuse' => 0,
],
[
'course' => '3DMAX',
'statuse' => 1,
],
[
'course' => 'autocat',
'statuse' => 1,
],
[
'course' => 'autocat',
'statuse' => 0,
]
]
;
$output = [];
array_walk($input, function($entry) use (&$output) {
$course = &$entry['course'];
if (!array_key_exists($course, $output)) {
$output[$course] = [
'call' => 0,
'register' => 0
];
}
switch($entry['statuse']) {
case 1:
$action = 'call';
break;
case 0:
$action = 'register';
break;
default:
throw new Exception("undefined action '$action'!");
}
$output[$course][$action]++;
});
print_r($output);
显而易见的输出是:
Array
(
[ICDL] => Array
(
[call] => 2
[register] => 1
)
[3DMAX] => Array
(
[call] => 1
[register] => 0
)
[autocat] => Array
(
[call] => 1
[register] => 1
)
)