加上依赖于另一个数组成员的数组成员

时间:2019-09-28 08:22:30

标签: php mysql arrays


我在数据库中有一个像底部的表格
课程 状态
ICDL 1
ICDL 1
ICDL 0
3DMAX 1
自动猫咪1
autocad 0

我想显示这样的日期表。


课程 通话 注册
ICDL 2 1
3DMAX 1 1 0
autocat 1 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
        )
)
相关问题