Search code examples
phparrayskeygroupingprefix

Group associative array data by key prefix


I have a array like this

Array (
    [operator_15] => 3
    [fiter_15] => 4
    [operator_17] => 5
    [fiter_17] => 5
    [operator_19] => 4
    [fiter_19] => 2
)

I want to separate this array in to 2 arrays:

  1. key starting from fiter_
  2. key starting from operator_

I used array filter and it doesn't work. any other option?

$array = array_filter(
    $fitered_values,
    function($key) {
        return strpos($key, 'fiter_') === 0;
    }
);

Solution

  • Give a try with below and see if its solve your problem

    $array = array ( 
        'operator_15' => 3,
        'fiter_15' => 4,
        'operator_17' => 5,
        'fiter_17' => 5,
        'operator_19' => 4,
        'fiter_19' => 2 );
    
    $operator=array();
    $filter=array();
    
    foreach($array as $key => $value){
        if (strpos($key, 'operator_') !== false) {
            $operator[$key] = $value;
        }
    
        if (strpos($key, 'fiter_') !== false) {
            $filter[$key] = $value;
        }   
    }
    
    print_r($operator);
    print_r($filter);