Поиск значения внутри масссива

51
26 сентября 2021, 03:30

Коллеги, добрый день. Я недавно занимаюсь разработкой на php и столкнулся с подобной проблемой. Если есть ответ на подобный вопрос, то перенаправьте, ибо я не смог "нагуглить" правильно. Есть такой массив:

count: 91
items:  
     1: 
      id: 515
      from_id: 12345
      date: 1509427858
      text: "Здравствуйте"
profiles:   
        1:  
         id: 12345
         first_name: "Ivan"
         last_name: "Ivanov"
groups  […]

Каким образом в данном массиве можно получить данные из полей first_name и last_name по полю id в массиве profiles, используя поле from_id массива items?

Проще говоря, у меня есть значение from_id, по этому значению я хочу получить first_name и last_name.

Answer 1

наиболее эффективным с точки зрения производительности в любом случае будет обычный цикл, т.к. его можно прервать при выполнении условия. Прочие варианты всегда будут перебирать массив целиком, либо выделять доп. память.

Можно id в массиве сделать ключами, и просто обратиться к элементу с нужным ключом, это, наверное, наиболее понятный для чтения вариант кода

$id = ...
$profiles = array_column($data['profiles'], null, 'id');
$profile = $profiles[$id];
Answer 2

Можно натравить array_filter, он выберет только нужный элемент массива

$res = array_filter($array['profiles'], 
              function ($x) use($from_id) { return $x['id'] == $from_id; });
echo "{$res[0]['first_name']} {$res[0]['last_name']}";
READ ALSO
Вывод в цикле лишь одного элемента (php) с определенным id

Вывод в цикле лишь одного элемента (php) с определенным id

есть цикл, в нем выводяться записи с базы данных, в нем есть следующее условие "{% if loopindex != 1 and loop

44
Как вывести подкатегории?

Как вывести подкатегории?

Имеется модель категорий

32
Рекомендации по моему первому коду PHP Laravel

Рекомендации по моему первому коду PHP Laravel

Всем привет, написал свой небольшой проект на Laravel

35