如何将奇数长度PHP数组均等分块并使大块置于末尾?
要实现你要的分块效果,有两种可行的方法:
方法一:手动切片(适合固定长度数组)
直接用array_slice截取对应长度的元素,简单直接:
$languages = ['php', 'mysql', 'java', 'nodejs', 'ruby', 'go', 'c#']; $chunks = [ array_slice($languages, 0, 2), // 取前2个元素 array_slice($languages, 2, 2), // 取第3到第4个元素 array_slice($languages, 4) // 取剩下的所有元素 ]; print_r($chunks);
方法二:通用处理(适配任意长度数组)
如果需要适配不同长度的数组,可以先通过array_chunk拆分,再检查最后一块的大小——如果它的长度小于设定的分块大小,就把最后两块合并成一块放到末尾:
$languages = ['php', 'mysql', 'java', 'nodejs', 'ruby', 'go', 'c#']; $chunkSize = 2; $chunks = array_chunk($languages, $chunkSize); // 合并最后两块(当最后一块长度不足时) if (count(end($chunks)) < $chunkSize) { $lastTwo = array_splice($chunks, -2); $chunks[] = array_merge(...$lastTwo); } print_r($chunks);
这样不管数组是7个、5个还是其他奇数长度,都能得到前几块大小一致、最后一块元素更多的分块结果。
内容的提问来源于stack exchange,提问作者user9876377
相关产品推荐
相关产品推荐

