【问题标题】:PHP searching multidimensional array for itemPHP搜索项目的多维数组
【发布时间】:2011-06-25 00:59:48
【问题描述】:

我目前有一个这样设置的数组:

$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”。

最好的方法是什么?

【问题讨论】:

  • 过去我发现多维数组很麻烦,而且往往会让人有些困惑。如果这是您在每个数组中存储的全部内容,我会按照 JacobM 的建议进行操作。

标签: php arrays multidimensional-array


【解决方案1】:

您是否受限于这种数组结构?因为更有效的结构就是做

$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"]

在任何一种情况下,从数字中找到给定的描述都是一个步骤。但是,如果您无法更改数组结构,那么您必须遍历数组进行检查(这可能需要与数组中的项目一样多的步骤)。

【讨论】:

  • 你说得很好。如果您不再需要任何元素,只需使用关联数组,其中 NUM 与 DESC 相关联。
  • 我可以将结构更改为您给出的第一个示例,但我将如何查找任何给定数字的描述?
  • @John 如果您将其更改为 @JacobM 的第一个示例,则 $number 的给定描述将是 echo $u_id[$number]['DESC'];
  • 编辑添加了一个使用示例,但想法是您要搜索的数字是您的数组键,因此如果您有 $search_num='2770',您可以得到 $u_id[$search_num],这就是您的描述.
  • 实际上,@Christopher,如果他使用我的第一个示例,他就不需要['DESC']。就是$u_id[$number]
【解决方案2】:
foreach($arrays as $arr){
  if($arr['NUM']==$num){
    return $arr['DESC'];
  }
}

【讨论】:

  • 没问题,但 Jacob 是对的,如果您可以选择重组阵列,您应该这样做:)
猜你喜欢
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
相关资源
最近更新 更多