PHP СВОДНАЯ ТАБЛИЦА

В PHP есть множество способов работы с таблицами. Одним из таких способов является создание сводной таблицы, что может быть очень полезно при обработке большого количества данных.

Для создания сводной таблицы в PHP можно использовать функции array и array_multisort. Сначала необходимо создать массив данных, который будет содержать все нужные нам значения. Далее, используя функцию array, необходимо создать массивы для столбцов, по которым мы будем группировать данные, и для значений, которые мы хотим отобразить в сводной таблице.

$data = array(
   array('name' => 'John', 'age' => 21, 'gender' => 'Male', 'score' => 85),
   array('name' => 'Mary', 'age' => 21, 'gender' => 'Female', 'score' => 91),
   array('name' => 'David', 'age' => 22, 'gender' => 'Male', 'score' => 89),
   array('name' => 'Emily', 'age' => 23, 'gender' => 'Female', 'score' => 78),
   array('name' => 'Daniel', 'age' => 22, 'gender' => 'Male', 'score' => 93)
);

$columns = array('age', 'gender');
$values = array('score');

Затем необходимо отсортировать наш массив данных используя функцию array_multisort. Мы сортируем массив по каждому из столбцов, указанных в массиве $columns. Далее, используя функцию array_reduce, мы группируем наши данные по каждому уникальному ключу в массиве $columns, а затем суммируем значения из массива $values. Результатом работы данного кода будет массив $pivotTable, который и будет содержать нашу сводную таблицу.

array_multisort(array_column($data, $columns[0]), SORT_ASC,
     array_column($data, $columns[1]), SORT_ASC,
     $data
);

$pivotTable = array_reduce($data, function ($carry, $item) use ($columns, $values) {
     $key = $item[$columns[0]] . '-' . $item[$columns[1]];
     if (!isset($carry[$key])) {
         $carry[$key] = array_combine($columns, array($item[$columns[0]], $item[$columns[1]]));
     }
     $carry[$key][implode('_', $values)] += $item[$values[0]];
     return $carry;
}, array());

В результате, в переменной $pivotTable мы получим следующую сводную таблицу:

Array
(
  [21-Female] => Array
    (
      [age] => 21
      [gender] => Female
      [score] => 91
    )
  [21-Male] => Array
    (
      [age] => 21
      [gender] => Male
      [score] => 85
    )
  [22-Female] => Array
    (
      [age] => 22
      [gender] => Female
      [score] => 0
    )
  [22-Male] => Array
    (
      [age] => 22
      [gender] => Male
      [score] => 182
    )
      ...
)

Создание сводной таблицы по данным с разных листов ➤ Модель данных в Excel

Дополнительные вычисления и операции сводных таблиц - 6-ое Видео курса \

Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! - 1-ое Видео курса \

PHP и PhpMyAdmin - создание, вывод, изменение и удаление данных

61 - Уроки PHP. Google Sheets API

Как сделать сводную таблицу в Excel

Как сделать сводную таблицу в Excel

Курс Excel_Базовый - Урок №20 Сводные таблицы. Принципы построения

Реклама
Новое
Реклама