【问题标题】:Filter array by sub element that starts with string [duplicate]按以字符串开头的子元素过滤数组[重复]
【发布时间】:2019-04-29 10:33:22
【问题描述】:

当子元素以某个字符串开头时,如何过滤数组?这将在 'name' 匹配 'bk-' 时过滤结果,但是我如何更改它以匹配以 'bk-' 开头的元素呢?

$starts_with = 'bk-';

$new_facets = array_filter($facets, function ($var) use ($starts_with) {
    return ($var['name'] == $starts_with);
});

【问题讨论】:

    标签: php


    【解决方案1】:

    改变功能逻辑:

    $new_facets = array_filter($facets, function ($var) use ($starts_with) {
        return (substr($var['name'],0, 3) == $starts_with);
    });
    

    【讨论】:

      【解决方案2】:

      substr 之类的东西可以完成这项工作,例如:

      <?php
      $starts_with = 'bk-';
      
      $facets = [
          ['name' => 'bk-0001'],  
          ['name' => 'bk-0002'], 
          ['name' => 'bx-0001']
      ];
      
      $new_facets = array_filter($facets, function ($var) use ($starts_with) {
          return substr($var['name'], 0, strlen($starts_with)) === $starts_with;
      });
      
      print_r($new_facets);
      

      https://3v4l.org/G0bHI

      结果:

      Array
      (
          [0] => Array
              (
                  [name] => bk-0001
              )
      
          [1] => Array
              (
                  [name] => bk-0002
              )
      
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-08
        • 2013-12-09
        • 1970-01-01
        • 1970-01-01
        • 2021-02-08
        • 2019-01-22
        • 1970-01-01
        相关资源
        最近更新 更多