Ответы пользователя по тегу PHP
  • Как сделать исчезающее сообщение на php?

    @Sasha333
    На странице вывода сделать удаление или show = 0 если нужно просто скрыть от посторонних глаз.

    Получили из бд запись с заранее известным идентификатором
    Вывели на экран
    Удалили из бд или не удалили :)
    Ответ написан
    Комментировать
  • Chmod через веб скрипт?

    @Sasha333
    Пробовали заливать wp не от рута? Допустим создали в этом же isp юзера с ограниченными правами, от него инсталлировали wp, тогда тоже этот шелл пускает ко всем дирректориям даже за выход прав этого ftp юзера?
    Ответ написан
  • Array_chunk + последний эелемент массива дублируется в первый следующего?

    @Sasha333 Автор вопроса
    Всем большое спасибо, если кому либо необходимо решение, можно использовать любое из представленных. Немного результатов (на верность их не претендую, специальных условий никаких не делал, заливал просто на рабочий vds 1vcpu/1ram/ssd nvme):

    как шаблон

    <?php
    $start = microtime(true);
    $i = 0;
    while ($i <= 100000)
        $array[] = '127.0.0.' . $i++;
    
    //здесь предложенный код
    
    var_dump($array);
    echo 'Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.';



    nokimaro

    <?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).' сек.';

    601d56f5bad50807779239.png


    Compolomus

    <?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).' сек.';

    601d56fd2642d887983801.png


    GogElf

    <?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).' сек.';

    601d5703ee8ab972315607.png


    мой вариант

    <?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).' сек.';

    601d570d5ddb1159595831.png
    Ответ написан
    2 комментария