【问题标题】:Given an associative array where the values are flat arrays, how can I search the values and return the key?给定一个关联数组,其中值是平面数组,我如何搜索值并返回键?
【发布时间】:2015-03-31 07:11:45
【问题描述】:

给定以下关联数组:

$array = [
    'canine' => ['dog', 'wolf'],
    'feline' => ['cat', 'tiger', 'jaguar']
];

现有的哪些函数(如果有)对于检索“犬”或“猫”键很有价值?

例如:如果给定 'tiger' 我想检索 'feline' 键。

【问题讨论】:

    标签: php arrays search multidimensional-array filtering


    【解决方案1】:

    我来晚了,还有其他答案,都不错

    但这是我的一个:

    function flatArraySearch($arr, $val) {
        foreach($arr as $key=>$subArr) {
            if (array_search($val,$subArr) !== false) {
                return $key;
            } 
        }
        return false;
    }
    
    $array = [
        'canine' => ['dog', 'wolf'],
        'feline' => ['cat', 'tiger', 'jaguar']
    ];
    
    echo flatArraySearch($array, 'tiger')."\n";
    
    echo flatArraySearch($array, 'wolf')."\n";
    
    echo flatArraySearch($array, 'bird')."\n";
    

    【讨论】:

      【解决方案2】:

      你需要2个循环,外层循环遍历key,内层循环在每个key中找到匹配的值,像这样:

      <?php
      $array = [
      'canine' => ['dog', 'wolf'],
      'feline' => ['cat', 'tiger', 'jaguar']
      ];
      
      $find = 'tiger';
      
      foreach ($array as $key => $valueArray) {
          foreach ($valueArray as $value) {
              if ($value == $find) {
                  echo $key;
                  break;
              }
          }
      }
      

      ?>

      【讨论】:

        【解决方案3】:

        我相信它没有内置函数,但是您可以轻松地自己编写它。

        function search($search, $array) {
           foreach($array as $key => $value)
              if (in_array($search, $value)) return $key;
           return FALSE;
        }
        

        【讨论】:

          猜你喜欢
          • 2020-09-04
          • 2023-03-06
          • 1970-01-01
          • 1970-01-01
          • 2017-11-27
          • 2012-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多