PHP
0
Вклад в тег
<?php
$start = microtime(true);
$i = 0;
while ($i <= 100000)
$array[] = '127.0.0.' . $i++;
//здесь предложенный код
var_dump($array);
echo 'Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.';
<?php
$start = microtime(true);
$i = 0;
while ($i <= 100000)
$array[] = '127.0.0.' . $i++;
$chunks = array_chunk($array, 4);
foreach($chunks as $key => $vals)
{
$next_chunk_key = $key+1;
if(isset($chunks[$next_chunk_key]))
{
//добавляем в начало след. чанка последний элемент текущего чанка
array_unshift($chunks[$next_chunk_key], end($vals));
}
}
var_dump($array);
echo 'Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.';
<?php
$start = microtime(true);
$i = 0;
while ($i <= 100000)
$array[] = '127.0.0.' . $i++;
$result = []; // результат
$len = 4; // длинна первого массива (менять для экспериментов)
$c = ceil(count($array) / $len) - 1; // количество итераций
$result[] = array_slice($array, 0, $len); // первый срез
$offset = $len - 1; // смещение для первой итерации
for (++$len, $j = 0, $i = 0; $i < $c; $i++, $offset += $len - 1, $j += $len) {
$result[] = array_slice($array, $offset, $len);
}
var_dump($array);
echo 'Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.';
<?php
$start = microtime(true);
$i = 0;
while ($i <= 100000)
$array[] = '127.0.0.' . $i++;
$chunks = [];
while($array){
$current = array_splice($array, 0, 4);
if(isset($old))
array_unshift($current, $old);
$old = end($current);
$chunks[] = $current;
};
var_dump($array);
echo 'Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.';
<?php
$start = microtime(true);
$i = 0;
while ($i <= 100000)
$array[] = '127.0.0.' . $i++;
$array = array_chunk($array, 3);
$count = count($array);
for ($i = 0; $i < $count; $i++) {
$lastip = end($array[$i]);
if ($i < $count - 1)
array_unshift($array[$i + 1], $lastip);
}
var_dump($array);
echo 'Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.';