PHP搜索项目的多维数组

时间:2011-06-25 00:59:49

标签: php arrays multidimensional-array

我目前有一个这样的阵列设置:

$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”将返回“描述一”。

这样做最好的方法是什么?

2 个答案:

答案 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'];
  }
}