• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Гайд Алгоритмы перебора массивов

  • Автор темы Автор темы phpdump
  • Дата начала Дата начала
Модератор раздела Рынок
Модератор
Модератор
Статус
Оффлайн
Регистрация
27 Апр 2019
Сообщения
108
Реакции
47
Итак, это мини статься про то как устроен перебор массива чем отличаются функции друг от друга на наглядных примерах с хорошим объяснением!
Приятного чтения ?
Быстрые алгоритмы перебора массива
Перебор массива — это основная операция, которая встречается во многих задачах программирования. От эффективности этого процесса часто зависит производительность программы. Основные методы перебора массива:

1. Цикл for
  • Классический способ перебора с индексами. Подходит, когда необходимо управлять шагом, начальным или конечным значением.
PHP:
Expand Collapse Copy
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
    echo $arr[$i];
}
2. Цикл foreach
  • Специальный цикл для перебора элементов коллекций (массивов, объектов). Он автоматически проходит по каждому элементу и удобен для простого доступа к элементам массива.
PHP:
Expand Collapse Copy
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $value) {
    echo $value;
}

3. Цикл while
  • Универсальный цикл, который продолжает выполнение, пока истинно условие. Хорош для ситуаций, когда нужно контролировать цикл с помощью логических условий, а не просто пройти по всем элементам.
PHP:
Expand Collapse Copy
$arr = [1, 2, 3, 4, 5];
$i = 0;
while ($i < count($arr)) {
    echo $arr[$i];
    $i++;
}

Отличия между while и foreach
  1. Назначение:
    • while универсален и подходит для любых ситуаций, где нужно повторять действия, пока выполняется условие. Это не только перебор массива.
    • foreach создан для удобного перебора массивов и объектов, делая код более читабельным и компактным.
  2. Простота:
    • foreach автоматически предоставляет доступ к элементам массива, без необходимости отслеживания индекса.
    • while требует ручного управления индексом или состоянием, что может усложнить код.
  3. Гибкость:
    • while можно использовать в более сложных сценариях, например, когда нужно досрочно завершить цикл или пропускать итерации в зависимости от условий.
    • foreach идеально подходит для простого и понятного перебора, но менее гибок в сравнении с while.
Примеры
1. while — перебор массива с досрочным завершением:​
PHP:
Expand Collapse Copy
$arr = [1, 2, 3, 4, 5];
$i = 0;
while ($i < count($arr)) {
    if ($arr[$i] == 3) {
        break; // Прерываем цикл, когда встречаем 3
    }
    echo $arr[$i];
    $i++;
}
2. foreach — простой перебор элементов:​
PHP:
Expand Collapse Copy
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $value) {
    echo $value;
}

Какой итог?
Хочу сказать в плане перебора массивов в преимуществе нужно использовать foreach т.к он предназначен для этого, ибо движок сразу получает набор инструкций, нежели с не предсказуемым while.

Код скрипта который замеряет скорость обеих функций, вы можете запустить и проверить кто быстрее.
PHP:
Expand Collapse Copy
<?php

ini_set('memory_limit', '-1');
// Исходный массив
$arr = range(1, 100000000); // Массив из 100 миллионов элементов

// Измерение времени выполнения foreach
$start = microtime(true);
foreach ($arr as $value) {
    $temp = $value;
}
$timeForeach = microtime(true) - $start;

// Измерение времени выполнения while
$start = microtime(true);
$i = 0;
while ($i < count($arr)) {
    $temp = $arr[$i];
    $i++;
}
$timeWhile = microtime(true) - $start;

echo "foreach: $timeForeach сек\n";
echo "while: $timeWhile сек\n";

Output:
foreach: 3.1434059143066 сек while: 4.4497950077057 сек

Разница почти в секунду не такая уж и большая скажете вы, но это лишь набор чистых цифр, на длинной дистанции выигрывает foreach.

Спасибо, что прочитали статью! Я старался, всем добра.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
годно
 
Назад
Сверху Снизу