Получение значения поля из массива объектов с помощью ключа внутри объекта

Это очень глупый вопрос, и я не могу поверить, что я спрашиваю о чем-то простом.

Im использует db->get['table']->result() для получения данных из таблицы.

Схема таблицы выглядит так: table (id, col1, col2).

db->get['table']->result() возвращает что-то вроде этого (print_r):

 Array ( [0] => stdClass Object ( [id] => 1 [col1] => "id 1 col 1" [col2] => "id 1 col 2" ) [1] => stdClass Object ( [id] => 2 [col1] => "id 2 col 1" [col2] => "id 2 col 2" ) [2] => stdClass Object ( [id] => 3 [col1] => "id 3 col 1" [col2] => "id 3 col 2" ) } 

Теперь мне нужно получить значение col2 из строки с id = 2, я хочу сделать это без цикла foreach.

Я думал, что смогу сделать это вот так:

 $valueThatINeed = $myArray[2]->col2; 

Это неправильно, и я знаю, почему это неправильно.

Вопрос: как напрямую получить то, что мне нужно без цикла?

 my_filter($array,$ID) { $col2 = array_values(array_filter($array, function($arrayValue) use($ID) { return $arrayValue[0] == $ID; } )); if (count($col2) > 0) { return $col2[0][2]; } else { return false; } } $col2 = my_filter($arr,2); 

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

Возможно, мы должны прийти к этому под другим углом … Вероятно, наиболее эффективным способом поиска правильной записи является запуск запроса SELECT в базе данных – ведь именно для этих целей оптимизированы базы данных, особенно, поскольку столбец id будет индексируется (предполагается, что id является первичным ключом).

Оригинальное сообщение:

Я предполагаю, что это не так просто:

$ valueThatINeed = $ myArray [2] -> $ col2;