这将是直接的方法:
<?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
)
)