Чанк массив в страницах, строках и столбцах - PullRequest
0 голосов
/ 21 сентября 2018

Я хотел бы отобразить большую таблицу в PDF-файле (горизонтальная ориентация), на нескольких страницах массив данных взят из моей базы данных.На странице должно быть 8 столбцов.Таким образом, в массиве результатов есть страницы, в которых есть строки, содержащие столбцы.

Я уже пробовал разные комбинации циклов for, но не смог понять это.

Структура данных, которую я имею:

  $data = [
    [
      'name' => 'Item_1',
      'id' => 1243123
    ],
    [
      'name' => 'Item_2',
      'id' => 1789435
    ],
    ...
    [
      'name' => 'Item_8',
      'id' => 4513531
    ],
    [
      'name' => 'Item_9',
      'id' => 352790
    ],
    ...
    [
      'name' => 'Item_12',
      'id' => 643563
    ],
  ];

Структура данных, которую я хочу:

  $result = [
    [
      ['Item_1', 'Item_2', ... , 'Item_8'],
      [1243123, 1789435, ... , 4513531]
    ],
    [
      ['Item_9', ... , 'Item_12'],
      [352790, ... , 643563]
    ]
  ];

Я попробовал это так:

  $data = array_chunk($fromDatabase, 8);
  $result = [];

  $pages = count($data);

  // For each Page
  for ($i = 0; $i < $pages; $i++) {

    // Add Rows to Page
    for ($r = 0; $r < count($data[$i]); $r++) {

      $result[$p][$r][] = $data[$i][0];

    }

  }

и со многими другими структурами цикла.

1 Ответ

0 голосов
/ 21 сентября 2018

Сначала вы можете разделить исходные данные на отдельные массивы с помощью array_column , затем вы можете разделить массив каждого столбца до нужного размера с помощью array_chunk .

НаконецВозьмите два фрагментированных массива и объедините их.

$nameChunks = array_chunk(array_column($data, 'name'), 8);
$idChunks = array_chunk(array_column($data, 'id'), 8);

$result = [];
foreach($nameChunks as $key => $names) {
    $result[] = [
        $names,
        $idChunks[$key],
    ];
}

Дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...