我目前有一个这样设置的数组:
$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"。
做这件事最好的方法是什么?
您是否受限于此数组结构?因为更有效的结构是只进行
$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"]
。
在这两种情况中,从数字中找到给定的描述都是一个步骤。但是,如果不能更改数组结构,则必须循环遍历数组进行检查(这可能需要与数组中的项一样多的步骤)。
foreach($arrays as $arr){
if($arr['NUM']==$num){
return $arr['DESC'];
}
}