127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4
127.0.0.5
127.0.0.6
127.0.0.7
127.0.0.8
127.0.0.9
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4
127.0.0.5
127.0.0.6
127.0.0.7
127.0.0.8
127.0.0.9
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4
127.0.0.4
127.0.0.5
127.0.0.6
127.0.0.7
127.0.0.8
127.0.0.8
127.0.0.9
$count = count($users);
for ($i = 0; $i < $count; $i++) {
$lastip = end($users[$i]);
if ($i < $count - 1)
array_unshift($users[$i + 1], $lastip);
}
<?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).' сек.';
<?php
$array = [
'127.0.0.1',
'127.0.0.2',
'127.0.0.3',
'127.0.0.4',
'127.0.0.5',
'127.0.0.6',
'127.0.0.7',
'127.0.0.8',
'127.0.0.9',
];
$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));
}
}
print_r($chunks);
$array = [
'127.0.0.1',
'127.0.0.2',
'127.0.0.3',
'127.0.0.4',
'127.0.0.5',
'127.0.0.6',
'127.0.0.7',
'127.0.0.8',
'127.0.0.9',
];
$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);
}
echo '<pre>' . print_r($result, true) . '</pre>';