我目前有一个这样的阵列设置:
$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”将返回“描述一”。
这样做最好的方法是什么?
答案 0 :(得分:4)
您是否受限于此阵列结构?因为一个更有效的结构就是
$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"]
。
在其中任何一种情况下,从数字中查找给定描述只需一步。但是,如果你不能改变数组结构,那么你必须遍历数组来检查(这可能需要采取与数组中的项目一样多的步骤。)
答案 1 :(得分:2)
foreach($arrays as $arr){
if($arr['NUM']==$num){
return $arr['DESC'];
}
}