按字符串过滤数组并分成2个数组

sam*_*ghe 1 php arrays array-filter

我有这样的数组

Array ( [operator_15] => 3 [fiter_15] => 4 [operator_17] => 5 [fiter_17] => 5 [operator_19] => 4 [fiter_19] => 2 )
Run Code Online (Sandbox Code Playgroud)

我想将这个数组分成2个数组:

  1. 关键从 fiter_
  2. 关键从 operator_

我使用了数组过滤器,它不起作用.还有其他选择吗?

$array = array_filter($fitered_values, function($key) {
            return strpos($key, 'fiter_') === 0;
        });
Run Code Online (Sandbox Code Playgroud)

And*_*eas 6

只需循环_使用strpos和substr 之前的数组和子字符串,然后就可以将它们过滤到新数组中.
此方法也适用于新的数组键,请参见示例:

$arr = array ( "operator_15" => 3, 
               "fiter_15" => 4, 
               "operator_17" => 5, 
               "fiter_17" => 5, 
               "somethingelse_12" => 99 // <--- Notice this line.
              );

foreach($arr as $key => $val){
    $subarr = substr($key,0, strpos($key, "_"));
    $new[$subarr][$key] = $val;
}

var_dump($new);
Run Code Online (Sandbox Code Playgroud)

输出:

array(3) {
["operator"]=>
  array(2) {
    ["operator_15"]=>
    int(3)
    ["operator_17"]=>
    int(5)
  }
  ["fiter"]=>
  array(2) {
    ["fiter_15"]=>
    int(4)
    ["fiter_17"]=>
    int(5)
  }
  ["somethingelse"]=>  // <-- is here now in it's own group with no code added
  array(1) {
    ["somethingelse_12"]=>
    int(99)
  }
}
Run Code Online (Sandbox Code Playgroud)