Как найти элемент массива по условию
Короткий ответ
С PHP 8.4 для этого есть array_find() — она возвращает первый подходящий элемент или null:
<?php
$users = [['id' => 1, 'name' => 'Anna'], ['id' => 2, 'name' => 'Oleg']];
$user = array_find($users, fn ($item) => $item['id'] === 2);
echo $user['name'];Результат:
OlegСтарые версии PHP
Отфильтруйте массив и возьмите первый элемент результата:
<?php
$users = [['id' => 1, 'name' => 'Anna'], ['id' => 2, 'name' => 'Oleg']];
$found = array_filter($users, fn ($item) => $item['id'] === 2);
$user = reset($found) ?: null;
echo $user['name'];Результат:
OlegИндекс по значению поля
array_column() и array_search() находят позицию элемента:
<?php
$users = [['id' => 1, 'name' => 'Anna'], ['id' => 2, 'name' => 'Oleg']];
echo array_search(2, array_column($users, 'id'));Результат:
1Функции из этого ответа
- array_find — Возвращает первый элемент, для которого функция вернула true.
- array_filter — Оставляет в массиве элементы, прошедшие проверку.
- reset — Возвращает первый элемент массива.