Как получить значение ключа в массиве?

$array = [
  ['id' => 12, 'title' => 'Заголовок'],
  ['id' => 15, 'title' => 'Заголовок 2'],
  ['id' => 16, 'title' => 'Заголовок 3'],
  ...
];

Как получить title зная только id?

Желательно без foreach


Ответы (1 шт):

Автор решения: Алексей Шиманский
$id = 15;
$title = $array[array_search($id, array_column($array, 'id'))]['title']; 
echo title;

Но это не спасёт, если у вас триллион записей :D Как правильно указали в комментариях, выбирайте из БД сразу нужные записи, если необходимо.


Ну а в целом без цикла среди таких записей не выбрать. При совпадении записи надо прерывать цикла, а не делать continue, чтобы не делать лишних итераций

$id = 15;
$title = '';

foreach($array as $item) {
    if ($item['id'] === $id) {
        $title = $item['title'];
        break;
    }
}

Вот если бы у вас массив сразу был бы проиндексирован идентификаторами, как пример:

$array = [
  12 => ['id' => 12, 'title' => 'Заголовок'],
  15 => ['id' => 15, 'title' => 'Заголовок 2'],
  16 => ['id' => 16, 'title' => 'Заголовок 3'],
  ...
];

Тогда без цикла было бы достать очень легко:

$id = 15;
$title =  $array[$id]['title'];
→ Ссылка