Скажем, у меня есть список из 65 строк.
Мне нужно разделить этот список на несколько «пулов», которые имеют одинаковое количество строк.
Сумма не может быть больше 32.
В этом списке из 65, они все с 1 по 65 место.
И так далее.
Тем не менее, новые списки должны быть справедливо ранжированы.
В примере это должно быть так:
Таким образом, ранг 1 и ранг 4 становятся рангом 1 и 2 в их новом списке.
То же самое относится и к остальным.
Я думаю, что мне нужно использовать array_chunk в сочетании с операцией по модулю, но я не могу обернуться вокруг нее.
Это не так сложно, как может показаться:
// settings
$cellCount = 115;
$maxPoolSize = 32;
// create test array with numbered strings
$testArray = array_fill(1,$cellCount,'Cell ');
foreach ($testArray as $key => $value) $testArray[$key] .= $key;
// determine the number of pools needed
$arraySize = count($testArray);
$poolCount = ceil($arraySize/$maxPoolSize);
// fill the pools
$poolNo = 0;
foreach ($testArray as $cell)
{
$poolArray[$poolNo][] = $cell;
$poolNo++;
if ($poolNo == $poolCount) $poolNo = 0;
}
// show result
echo '<pre>';
print_r($poolArray);
echo '</pre>';
Я уверен, что есть другие решения, но это, кажется, делает работу.
Я думаю, что вы на правильном пути, используя array_chunk и операцию по модулю, я бы выбрал именно это.
Это было бы как:
$countarray = count($myarray);
$modulo = 2;
while ($countarray>32)
{
$result = $countarray/$modulo;
if($result>32)
$modulo++;
}
$newpool = array_chunk($myarray, $modulo);
Я не бог в php, поэтому я надеюсь, что это поможет! Извините за мой плохой английский.