У меня большой массив 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; } }
Это работает, но я надеюсь, что есть лучший способ сделать это.
Ты можешь
$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...
Я наткнулся на это, когда пытался найти ответ на этот вопрос. Он извлекает все элементы здесь. Код можно изменить, чтобы получить требуемое значение.
Получить определенный элемент из каждого вспомогательного массива