在php二维数组中找到元素的官方方法?

时间:2014-03-05 20:48:28

标签: php arrays

查看上面的代码......

$Array = array(array("name"=>"Mickey","type"=>"mouse"),array("name"=>"Donald","type"=>"duck"),array("name"=>"Little Helper","type"=>"eniac"));
$search = "Donald";
foreach($Array as $Item){
    if($Item["name"]==$search) $MyItem = $Item;
}
echo('The item named "'.$search.'" is '.$MyItem["type"]);

...我觉得有一个数组函数或更好的方法来查找二维数组中的项目。这些数组就像一个表。也许将键设置为索引唯一值(在本例中为名称),但我不知道如何操作。

3 个答案:

答案 0 :(得分:2)

在PHP 5.5中使用新的array_column()函数

$Array = array(array("name"=>"Mickey","type"=>"mouse"),array("name"=>"Donald","type"=>"duck"),array("name"=>"Little Helper","type"=>"eniac"));
$search = "Donald";

$key = array_search(
    $search,
    array_column($Array,'name')
);
if($key !== false) {
    $MyItem = $Array[$key];
    echo('The item named "'.$search.'" is '.$MyItem["type"]);
}

答案 1 :(得分:1)

如果您可以将数组重新组合为:

array("Mickey"=>"mouse","Donald"=>"duck","Little Helper"=>"eniac");

array("Mickey"=>array("name"=>"mouse"),"Donald"=>array("name"=>"duck"),"Little Helper"=>array("name"=>"eniac"));

然后按键返回

答案 2 :(得分:0)

适用于此案例:

echo array_column($Array, 'type', 'name')[$search];

或者使用支票:

$names = array_column($Array, 'type', 'name');
echo isset($names[$search]) ? $names[$search] : 'not found';

转换为name => type使用:

$Array = array_column($Array, 'type', 'name');

然后,您可以使用$Array[$search]