Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти элемент массива по условию

Короткий ответ

С 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 — Возвращает первый элемент массива.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.