繁体   English   中英

搜索多维数组并将键分配为变量

[英]Search multidimensional array and assign key as variable

我有一个数组和一个数字,分配给变量$cat

$categories_array = array(
    "Belts" => array(131),
    "Headwear" => array(171,172,185,186),
    "ScarvesAndGloves" => array(166,173,184)
);

如果$cat是171,我希望$category成为Headwear

我看过array_search但它似乎不适用于多维数组。 我在站点周围找到的所有解决方案似乎都依赖于子数组中每个条目的键。 我只想将键的名称分配给变量(如果它出现在数组中)。 不会重复。

可以用这种格式实现还是应该重新构造此数组? 有没有更好的方法来达到这个结果?

我看不到您的阵列有问题。

这就是我搜索数组的方式:

$cat = 171; 
$category = '';

$categories_array = array(
  "Belts" => array(131),
  "Headwear" => array(171,172,185,186),
  "ScarvesAndGloves" => array(166,173,184)
);

foreach($categories_array as $category_name => $categories) {
  if(in_array($cat, $categories)) {
    $category = $category_name;
  }
}

echo "You have chosen: $category"; 

以下代码将是您的问题的许多解决方案之一:

$cat = 171;
$category = '';

foreach ($categories_array as $k => $v) {
    if (false !== array_search($cat, $v)) {
        $category = $k;
    }
}

echo $category;

我的答案几乎与上述类似,只是添加了一个中断,因此,如果您已经获得结果,则无需继续循环。 如果数组太大,将很有效。

$cat              = 171;
$categories_array = array (
    "Belts"            => array (131),
    "Headwear"         => array (171, 172, 185, 186),
    "ScarvesAndGloves" => array (166, 173, 184)
);

echo getaName($categories_array, $cat);


function getaName($array, $searchKey) {
    $name = '';
    foreach($array as $key => $val) {
        if(in_array($searchKey, $val)){
            $name = $key;
            break;
        }
    }
    return $name;
}

尝试:

<?php
    function getvalue($cat){
       foreach($categories_array as $categorie =>$list){
          if(in_array($cat,$list))
             return $categorie;
        }
       return false
     }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM