Объединить элементы массива во время цикла в php


добрый вечер принадлежности, прихожу с сомнений в цикле в php.

мне нужно создать PDF-отчета, а также обширный. Альтернативой, которую сам MPDF указывает, создания блоков и пойти писать страницы. Будет переполнение, но мне нужно сгенерировать pdf-файл с отчетом, который может иметь до 100 тысяч записей (я хочу вывести 100 на странице или идти адаптации), поэтому MPDF не удается получить html-код всего один раз.

дело В том, что у меня есть массив, где каждый индекс получает строку данных (тег - <tr>), которые я получаю из базы данных. Однако я хотел бы сгруппировать это в блоки по 100 например, то есть, для каждого индекса, группировать 100 строк.

моя array текущий следует, что формат

$tr = [
  0 => "<p>Valor 1</p>",
  1 => "<p>Valor 2</p>",
  2 => "<p>Valor 3</p>",
  3 => "<p>Valor 4</p>",
  4 => "<p>Valor 5</p>",
  ...
];

В приведенном выше примере, если бы это было например 2 элемента по индексу, я должен остаться, так:

$tr = [
  0 => "<p>Valor 1</p> <p>Valor 2</p>",
  1 => "<p>Valor 3</p> <p>Valor 4</p>",
  2 => "<p>Valor 5</p>" ... 
];

Я попытался сделать цикл, который выглядит как обходной путь, но он дает некоторые ошибки индекса и потерпите некоторые элементы, что я попытался было это:

$group = [];
for($i = 0; $i <= count($tr); $i++) {       
    for($i2 = 0; $i2 < 100; $i2++) {
        $group[$i] .= $tr[$i2];
        unset($tr[$i2]);
    }
    $tr = array_values($tr);
}

То, что я пытался сделать это, каждый шнурок, петля, заполнить до 100, и петли во-вторых for я делаю unset очистка этой переменной, чтоб при выходе из for и пойти pro, следующий цикл из вне, изменить массив без элементов, которые уже были записаны.

может ли Кто-нибудь помочь мне с этой логикой. Я не в состоянии мыслить и чистой форме это -

Author: Rafael, 2020-06-28

1 answers

Вы можете использовать функцию array_chunk() сломать сью массив на блоки по 100 элементов. Каждый из этих блоков вы можете группировать свои элементы с помощью функции implode() то, что объединяет элементы массива в строку.

В примере я создал массив $tr содержащих 731 элементов <p> и применил рассуждения, описано выше.

<?php
//Cria um array com 731 elementos para o exemplo.
for($i=1;$i<=731;$i++){
  $tr[]="<p>Valor $i</p>";
}

//Quebra o array em blocos de 100 elementos e itera sobre eles.
foreach(array_chunk($tr, 100) as $item){
  $resultado[]= implode($item); //Agrupa cada bloco em uma string e a adiciona ao resultado.
}

print_r($resultado);

Тестирования кода в Repl.it

 1
Author: Augusto Vasques, 2020-06-28 18:50:17