popov . dev

Main

Library

Articles

Новые функции ма...

Новые функции массивов в PHP 8.4

В PHP 8.4 появились новые интересные функции работы с массивами, которые облегчают жизнь разработчикам. В этом подробном руководстве будут рассмотрены эти мощные дополнения с практическими примерами, понятными даже новичкам. Независимо от того, являетесь ли вы начинающим программистом или опытным разработчиком, эти новые функции упростят ваши операции с массивами.

Что нового в функциях массивов PHP 8.4?

В PHP 8.4 представлены четыре мощные функции работы с массивами, которые упрощают обычные операции с массивами. Эти функции снижают сложность кода и улучшают читаемость, делая манипулирование массивами более интуитивным, чем когда-либо.

Функция array_find()

Функция array_find() - это идеальное решение для поиска первого элемента, соответствующего вашим критериям.

Синтаксис

array_find(array $array, callable $callback): mixed

Пример:

$fruits = ['apple', 'banana', 'mango', 'orange'];
$longFruit = array_find($fruits, fn($fruit) => strlen($fruit) > 5);

// Результат: "banana"

Практическое применение:

$users = [
    ['name' => 'John', 'age' => 25, 'active' => true],
    ['name' => 'Sarah', 'age' => 30, 'active' => false],
    ['name' => 'Mike', 'age' => 28, 'active' => true]
];

$activeUser = array_find($users, fn($user) => $user['active']);

// Возвращает первого активного пользователя

Функция array_find_key()

Нужно найти ключ вместо значения? array_find_key() - это то что вам надо.

Синтаксис:

array_find_key(array $array, callable $callback): string|int|null

Пример:

$prices = [
    'laptop' => 85000,
    'phone' => 45000,
    'tablet' => 35000
];

$affordableItem = array_find_key($prices, fn($price) => $price < 50000);

// Результат: "phone"

Работа с array_any()

Проверьте, соответствует ли какой-либо элемент вашему условию, с помощью array_any().

Синтаксис:

array_any(array $array, callable $callback): bool

Пример:

$orders = [
    ['status' => 'pending'],
    ['status' => 'completed'],
    ['status' => 'pending']
];

$hasCompletedOrders = array_any($orders, fn($order) => 
    $order['status'] === 'completed'
);
// Результат: true

Функция array_all()

Проверьте, соответствуют ли все элементы вашим критериям, используя array_all().

Синтаксис:

array_all(array $array, callable $callback): bool

Пример:

$products = [
    ['name' => 'Laptop', 'inStock' => true],
    ['name' => 'Phone', 'inStock' => true],
    ['name' => 'Tablet', 'inStock' => true]
];

$allInStock = array_all($products, fn($product) => $product['inStock']);
// Результат: true

Практические примеры:

Давайте объединим эти функции в практическом сценарии электронной коммерции:

$products = [
    ['name' => 'Laptop', 'price' => 85000, 'stock' => 5],
    ['name' => 'Phone', 'price' => 45000, 'stock' => 0],
    ['name' => 'Tablet', 'price' => 35000, 'stock' => 3]
];

// Поиск первого доступного товара стоимостью менее 50 000₽
$affordableProduct = array_find($products, fn($product) => 
    $product['price'] < 50000 && $product['stock'] > 0
);

// Проверим, закончился ли какой-либо товар на складе
$hasOutOfStock = array_any($products, fn($product) => 
    $product['stock'] === 0
);

// Проверим, что все продукты имеют правильную цену
$validPricing = array_all($products, fn($product) => 
    $product['price'] > 0
);
  • Всегда проверяйте, не возвращается ли значение null с помощью array_find()
  • Используйте объявления типов для повышения надежности кода
  • Сохраняйте функции обратного вызова простыми и целенаправленными
  • Учитывайте производительность при работе с большими массивами

FAQ

Доступны ли эти функции в PHP 8.3?

Нет, эти функции специально введены в PHP 8.4.

Могу ли я использовать эти функции с ассоциативными массивами?

Да, все эти функции работают как с индексированными, так и с ассоциативными массивами.

Что произойдет, если ни один элемент не соответствует условию в array_find()?

Он возвращает значение null, поэтому всегда обрабатывайте этот случай в своем коде.

Заключение

Новые функции массивов в PHP 8.4 представляют собой значительный шаг вперед в области манипулирования массивами. Они обеспечивают более чистый и читаемый код, одновременно снижая сложность обычных операций с массивами. Начните использовать эти функции в своих проектах, чтобы писать более элегантный и удобный в обслуживании PHP-код.

Comments

In order to leave your opinion, you need to register on the website