多维数组中的键/值搜索

时间:2014-11-11 16:56:13

标签: php multidimensional-array key-value

在构建Google Feed时,我需要一种方法来根据大小返回年龄组的多维数组中的键:

$sizeArray = array("Newborn" => "0-3m", 
                   "Infant" => array("3-6m", "6-12m"), 
                   "Toddler" => array("12-18m", "18-24m", "2T", "3T", "4T", "5"), 
                   "Kids" => array("6", "7", "8")
             );

我希望它看起来与此相似:

findKey("18-24m", $sizeArray);

哪会返回:Toddler

如果有更好的方法可以做到这一点,那我就是全部的耳朵。提前谢谢!

3 个答案:

答案 0 :(得分:0)

您可以这样做:

$sizeArray = array("Newborn" => "0-3m", 
                   "Infant" => array("3-6m", "6-12m"), 
                   "Toddler" => array("12-18m", "18-24m", "2T", "3T", "4T", "5"), 
                   "Kids" => array("6", "7", "8")
             );

foreach($sizeArray as $key => $array) {
    if(is_array($array)) {
        if(array_search('18-24m', $array)) {
            echo $key;
        }
    }
}

希望它有所帮助! :d

答案 1 :(得分:0)

我担心你不得不求助于搜索阵列。

function findKey($size,$array) {
    foreach($array as $groupName => $data) {
        if(is_array($data)){                // first element is not an array...so check it.
            if(in_array($size,$data)) {
                return $groupName;
            }
        }elseif($size == $data){
            return $groupName ;
        }
    }
    return false;
}

这将在您的多维数组中搜索给定大小的每个数组,并在找到大小时返回其名称。如果找不到给定大小的组,则返回false。

答案 2 :(得分:0)

创建一个函数来查找密钥:

function findKey($findKey, $array)
{
  foreach($array as $key => $val)
  {
    if(in_array($findKey, $val))
      return $key
  }
  return false;
}

现在您可以将一个数组和键传递给函数以查找键,如下例所示:

 $sizeArray = array("Newborn" => "0-3m", 
                       "Infant" => array("3-6m", "6-12m"), 
                       "Toddler" => array("12-18m", "18-24m", "2T", "3T", "4T", "5"), 
                       "Kids" => array("6", "7", "8")
                 );
findKey("18-24m", $sizeArray);