【问题标题】:Is there a version of array_keys that works on partial matches?是否有适用于部分匹配的 array_keys 版本?
【发布时间】:2015-05-19 20:04:15
【问题描述】:

我想返回 PHP 数组中的所有键,其中对应的值包含搜索元素。

array_keys 会在值与搜索词完全匹配时起作用,但如果搜索词出现在值中的某处但不完全匹配则不会。

我怎样才能做到这一点?

【问题讨论】:

    标签: php arrays match


    【解决方案1】:

    array_keys()array_filter()的组合可以达到你想要的效果:

    $myArray = ['knitting needle', 'haystack', 'needlepoint'];
    
    $search = 'needle';
    $keys = array_keys(
        array_filter(
            $myArray,
            function ($value) use ($search) {
                return (strpos($value, $search) !== false);
            }
        )
    );
    

    Demo

    【讨论】:

      【解决方案2】:

      试试这个自定义函数:

      function array_keys_partial(array $haystack, $needle) {
          $keys = array();
          foreach ($haystack as $key => $value) {
              if (false !== stripos($value, $needle)) {
                  array_push($keys,$key);
              }
          }
          if(empty($keys)){
              return false;
          }
          else {
              return $keys;
          }
      }
      

      这将返回部分匹配的键,并且不区分大小写。如果要区分大小写,请将stripos 更改为strpos

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多