# 05. Работа с массивами и коллекциями
[← Оглавление](./index.md)
---
## Встроенные функции вместо foreach-циклов
**ПЛОХО**
```php
$activeClientIds = [];
foreach ($clients as $client) {
if ($client['UF_ACTIVE'] === 'Y') {
$activeClientIds[] = $client['ID'];
}
}
```
**ХОРОШО**
```php
$activeClients = array_filter($clients, fn($c) => $c['UF_ACTIVE'] === 'Y');
$activeClientIds = array_column($activeClients, 'ID');
```
---
## Вложенные массивы — разворачивание через array_merge / array_column
**ПЛОХО — ВЛОЖЕННЫЕ ЦИКЛЫ**
```php
$allPhones = [];
foreach ($contacts as $contact) {
foreach ($contact['PHONE'] as $phone) {
$allPhones[] = $phone['VALUE'];
}
}
```
**ХОРОШО**
```php
$allPhones = array_merge(...array_column($contacts, 'PHONE'));
$phoneNumbers = array_column($allPhones, 'VALUE');
```
---
## Коллекции объектов для сложных структур
**ПЛОХО — РУЧНОЙ ЦИКЛ ДЛЯ АГРЕГАЦИИ**
```php
$sum = 0;
foreach ($dealProducts as $row) {
$sum += $row['PRICE'] * $row['QUANTITY'];
}
```
**ХОРОШО — ILLUMINATE/COLLECTIONS**
```php
$totalSum = collect($dealProducts)
->sum(fn($row) => $row['PRICE'] * $row['QUANTITY']);
```