Объединить элементы массива во время цикла в 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, следующий цикл из вне, изменить массив без элементов, которые уже были записаны.
может ли Кто-нибудь помочь мне с этой логикой. Я не в состоянии мыслить и чистой форме это -
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