Для получения полного доступа
зарегистрируйтесь.
Сниппет,  PHP

Разбитие массива на части


<?php
/**
* Разбивает массив на чанки размером [n,2n-1]
*/
function array_chunk_min($list,$minSize){
	$cnt = count($list);
	if($cnt <= $minSize){
		return array($list);
	}
	$lastChunkSize = $cnt%$minSize;
	if($lastChunkSize > 0){
		$chunks = array_chunk(array_slice($list, 0, $cnt-$lastChunkSize),$minSize);
		$lastChunk = array_slice($list, $cnt-$lastChunkSize,$minSize);
		$cntChunks = count($chunks);
		$chunks[$cntChunks-1] = array_merge($chunks[$cntChunks-1],$lastChunk);
	}else{
		$chunks = array_chunk($list, $minSize);
	}
	return $chunks;
}
print_r(array_chunk_min(range(1,45),20)); // [[1...20],[21...45]]
print_r(array_chunk_min(range(1,19),20)); // [[1...19]]
  работа с массивами array_chunk

Автор


Gravatar image
Ambalus
  • Репутация: 3
  • Сниппеты : 2
  • Ревизии : 0
Подписаться

Другие варианты сниппета Отсортировано по рейтингу


  Рейтинг
-1

Разбитие массива на части, последний элемент делает больше $minsize 26 дек. 2016 г., 14:23:42
```php <?php /** * Разбивает массив на чанки размером [n,2n-1] */ function array_chunk_min($list, $minSize){ $listCount = count($list); $chunks = array_chunk($list, $minSize); $chunksCount = count($chunks); if ($listCount > $minSize && count($chunks[$chunksCount - 1]) % $minSize > 0) { $chunks[$chunksCount - 2] = array_merge($chunks[$chunksCount - 2], $chunks[$chunksCount - 1]); array_pop($chunks); } return $chunks; } print_r(array_chunk_min(range(1,45),20)); // [[1...20],[21...45]] print_r(array_chunk_min(range(1,19),20)); // [[1...19]] ```

  • Автор: higimo
  • Просмотров: 1640

Чтобы увидеть комментарии, нужно быть участником сообщества

Регистрация