【问题标题】:Key/Value Search in Multidimensional Array多维数组中的键/值搜索
【发布时间】:2014-11-12 01:26:17
【问题描述】:

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

$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

如果有更好的方法来做到这一点,我会全力以赴。提前致谢!

【问题讨论】:

  • 更好的方法是将数组重组为:['0-3m' => 'Newborn', '3-6m' => 'Infant', '6-12m' => 'Infant' 等。因此您根本不需要任何函数。

标签: php multidimensional-array key-value


【解决方案1】:

你可以这样做:

$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

【讨论】:

    【解决方案2】:

    恐怕您将不得不求助于搜索数组。

    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。

    【讨论】:

      【解决方案3】:

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

      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);
      

      【讨论】:

        猜你喜欢
        • 2019-10-29
        • 2014-05-20
        • 2017-09-08
        • 2017-01-13
        • 1970-01-01
        • 1970-01-01
        • 2016-12-12
        • 2020-01-15
        • 1970-01-01
        相关资源
        最近更新 更多