在PHP二维阵列中找到元素的官方方法



查看上面的代码...

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

...我感觉到有一个数组功能或更好的方法可以在二维数组中找到项目。这些阵列就像一张桌子。也许将密钥设置为索引唯一值(在这种情况下为名称),但我不知道该怎么做。

使用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"]);
}

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

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

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

,只需通过键

返回

适用于这种情况:

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]

最新更新