PHP ищет многомерный массив для элемента - PullRequest
1 голос
/ 25 июня 2011

В настоящее время у меня установлен массив, подобный следующему:

$u_id= array(
    array(
        NUM=>'2770', DESC=>'description one'
    ), 

    array(
        NUM=>'33356', DESC=>'description two'
    ), 

    array(
        NUM=>'13576', DESC=>'description three'
    ),

    array(
        NUM=>'14141', DESC=>'description four'
    )
);

Мне нужно иметь возможность передавать число через этот массив как $num (что соответствует NUM => '' в массиве) и сохраните соответствующий DESC => '' в виде строки.Например, поиск «2770» вернул бы «description one».

Каков наилучший способ сделать это?

Ответы [ 2 ]

4 голосов
/ 25 июня 2011

Вы ограничены этой структурой массива?Поскольку более эффективной структурой было бы просто сделать

$u_id= array(
     '2770' => 'description one',
     '33356' => 'description two',
     '13576' => 'description three',
     '14141' => 'description four'
);

То есть вы просто предполагаете, что ключ - это число, а значение - описание, а не называете их явно.Тогда код для поиска правильного описания - просто $u_id[2770] (или любой другой).

Если это не приемлемо, вы также можете сделать

$u_id= array(
    '2770' => array(
        NUM=>'2770', DESC=>'description one'
    ), 

    '33356' => array(
        NUM=>'33356', DESC=>'description two'
    ), 

    '13576' => array(
        NUM=>'13576', DESC=>'description three'
    ),

    '14141' => array(
        NUM=>'14141', DESC=>'description four'
    )
);

То есть номер также используетсяв качестве ключа, чтобы найти правильную пару.Код для поиска правильного описания становится $u_id[2770]["NUM"].

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

2 голосов
/ 25 июня 2011
foreach($arrays as $arr){
  if($arr['NUM']==$num){
    return $arr['DESC'];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...