Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在多维数组中搜索项_Php_Arrays_Multidimensional Array - Fatal编程技术网

PHP在多维数组中搜索项

PHP在多维数组中搜索项,php,arrays,multidimensional-array,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' ), a

我目前有一个如下设置的阵列:

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


执行此操作的最佳方式是什么?

您是否受限于此阵列结构?因为一个更有效的结构就是

foreach($arrays as $arr){
  if($arr['NUM']==$num){
    return $arr['DESC'];
  }
}
$u_id= array(
     '2770' => 'description one',
     '33356' => 'description two',
     '13576' => 'description three',
     '14141' => 'description four'
);
也就是说,您只需假设键是数字,值是描述,而不是显式地命名它们。那么,找到正确描述的代码就是
$u\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\u id[2770][“NUM”]


在这两种情况中,从数字中查找给定描述都是一个步骤。但是,如果您无法更改数组结构,则必须在数组中循环检查(这可能需要与数组中的项目相同的步骤)。

您是否受限于此数组结构?因为一个更有效的结构就是

$u_id= array(
     '2770' => 'description one',
     '33356' => 'description two',
     '13576' => 'description three',
     '14141' => 'description four'
);
也就是说,您只需假设键是数字,值是描述,而不是显式地命名它们。那么,找到正确描述的代码就是
$u\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\u id[2770][“NUM”]


在这两种情况中,从数字中查找给定描述都是一个步骤。但是,如果无法更改数组结构,则必须在数组中循环进行检查(这可能需要与数组中的项目相同的步骤)。

这是一个很好的观点。如果您不需要更多的元素,只需使用一个关联数组,其中NUM与DESC相关联。我可以将结构更改为您给出的第一个示例,但我将如何查找任何给定数字的描述?@John如果您将其更改为@JacobM的第一个示例,则$number的给定描述将是
echo$u\id[$number]['DESC'];
编辑以添加用法示例,但其思想是您正在搜索的数字是您的数组键,因此如果您有
$search\u num='2770'
您只需获得
$u id[$search\u num]
即可。事实上,@Christopher,如果他使用我的第一个示例,他就不需要
['DESC']
。它应该是
$u\u id[$number]
。你说得很好。如果你不需要更多的元素,只需使用一个关联数组,其中NUM与DESC关联。我可以将结构更改为你给出的第一个示例,但我如何才能找到任何给定数字的描述?@John如果你将其更改为@JacobM的第一个示例,你需要$nu的给定描述mber应该是
echo$u\u id[$number]['DESC'];
编辑以添加用法示例,但其思想是您正在搜索的数字是您的数组键,因此如果您有
$search\u num='2770'
您可以只获得
$u\u id[$search\u num]
这就是你的描述。事实上,@Christopher,如果他使用我的第一个例子,他不需要
['DESC']
。只要
$u id[$number]
。我发现多维数组在过去是一件麻烦事,它们往往有点让人困惑。如果每个数组中存储的都是这些,我会按照JacobM的建议去做。我发现多维数组在过去是一件麻烦事,它们往往有点让人困惑。如果你是stori,我会按照JacobM的建议去做没有问题,但是Jacob是对的,如果你可以选择重组你的数组,你应该:)没有问题,但是Jacob是对的,如果你可以选择重组你的数组,你应该:)