Получите дополнительный массив с определенным значением

У меня большой массив PHP, похожий на:

$list = array( array( 'id' = '3243' 'link' = 'fruits' 'lev' = '1' ), array( 'id' = '6546' 'link' = 'apple' 'lev' = '2' ), array( 'id' = '9348' 'link' = 'orange' 'lev' = '2' ) ) 

Я хочу получить вспомогательный массив, который содержит определенный id .

В настоящее время я использую следующий код.

 $id = '3243' foreach ($list as $link) { if (in_array($id, $link)) { $result = $link; } } 

Это работает, но я надеюсь, что есть лучший способ сделать это.

Ты можешь

  • write $link['id']==$id вместо in_array($id, $link) будет дешевле.
  • добавить break; инструкция после $result = $link; избежать бесполезных циклов

Хотя этот ответ не сработал бы, когда вопрос был задан, есть довольно простой способ решить эту дилемму.

В PHP 5.5 вы можете сделать следующее:

 $newList = array_combine(array_column($list,'id'),$list); 

И тогда будет верно следующее:

 $newList[3243] = array( 'id' = '3243'; 'link' = 'fruits'; etc... 

Я наткнулся на это, когда пытался найти ответ на этот вопрос. Он извлекает все элементы здесь. Код можно изменить, чтобы получить требуемое значение.

Получить определенный элемент из каждого вспомогательного массива