TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.3K subscribers
Post #1884 536
🤔 Какими способами организовать порции?

В PHP можно организовать обработку данных порциями разными способами, в зависимости от того, с чем именно мы работаем: с базой данных, файлами или массивами. Основные методы:
SQL-запрос с LIMIT и OFFSET
Чтение файла построчно (fgets(), SplFileObject)
Итерация по массиву с array_chunk()
Использование генераторов (yield)

🟠Постраничная выборка в SQL (`LIMIT` + `OFFSET`)
При работе с базой данных мы можем загружать данные порциями с помощью LIMIT и OFFSET
$limit = 10;  // Количество записей на страницу  
$offset = 0; // Смещение (номер страницы * $limit)

$sql = "SELECT * FROM users ORDER BY id LIMIT $limit OFFSET $offset";
$result = $pdo->query($sql)->fetchAll();


Альтернативный вариант – постраничная выборка без OFFSET
$last_id = 0;
$sql = "SELECT * FROM users WHERE id > $last_id ORDER BY id LIMIT $limit";


🟠Чтение файла порциями (`fgets()`, `SplFileObject`)
При работе с большими файлами можно читать их построчно, а не загружать в память целиком.fgets() – чтение построчно
$handle = fopen("large_file.txt", "r");
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);


SplFileObject – более удобный способ
$file = new SplFileObject("large_file.txt");
while (!$file->eof()) {
echo $file->fgets();
}


🟠Разделение массива на порции (`array_chunk()`)
Если у нас массив данных, можно разбить его на части
$data = range(1, 100);
$chunks = array_chunk($data, 10);

foreach ($chunks as $chunk) {
print_r($chunk); // Выведет массивы по 10 элементов
}


🟠Генераторы (`yield`) – ленивый способ
Генераторы позволяют возвращать элементы по одному, не загружая всё в память сразу.
function getData() {
for ($i = 1; $i <= 100; $i++) {
yield $i; // Возвращает по одному значению
}
}

foreach (getData() as $num) {
echo $num . "\n";
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
  • 💊 1
More from @easy_php_ru
  1. Oct 16, 2026🤔 Что такое агрегат? Агрегат – это термин, часто используемый в области баз данных и прог…
  2. Oct 15, 2026🤔 Что такое замыкание? Это функция, которая «захватывает» переменные из внешней области в…
  3. Oct 15, 2026🤔 Что есть кроме микросервисной и монолитной архитектуры? Помимо монолитной и микросервис…
  4. Oct 14, 2026🤔 В чём суть абстрактного класса? Абстрактный класс — это класс, который нельзя инстанцир…
  5. Oct 14, 2026🤔 В чем принцип работы HashTable? Хеш-таблица – это структура данных, которая хранит пары…
  6. Oct 13, 2026🤔 Что такое namespaces Namespaces в PHP — это способ организации кода для предотвращения…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →