php - finding keys in an array that match a pattern

you can simply loop through the array and check the keys

$array = array(...your values...);

foreach($array as $key => $value) {
    if (preg_match($pattern,$key)){
        // it matches
    }
}

You can wrap it in a function and pass your pattern as parameter


Old question, but here's what I like to do:

$array = [ '2.5' => 'ABDE', '4.8' => 'Some other value' ];

preg_grep + array_keys will find all keys

$keys = preg_grep( '/^2\.\d/i', array_keys( $array ) );

You can add array_intersect_key and array_flip to extract a slice of the array that matches the pattern

$vals = array_intersect_key( $array, array_flip( preg_grep( '/^2\.\d/i', array_keys( $array ) ) ) );

For future programmers who encounter the same issue. Here is a more complete solution which doesn't use any loops.

    $array = ['2.5'=> 'ABCDE', '2.9'=>'QWERTY'];
    $keys = array_keys($array);
    $matchingKeys = preg_grep('/^2\.+/', $keys);
    $filteredArray = array_intersect_key($array, array_flip($matchingKeys));
    print_r($filteredArray);

I think you need something like this:

$keys = array_keys($array);
$result = preg_grep($pattern, $keys);

The result will be a array that holds all the keys that match the regex. The keys can be used to retrieve the corresponding value.

Have a look at the preg_grep function.

Tags:

Php