1

I'm trying to grab any data that has a key of "release_"... I think I'm supposed to use array_filter, but I'm having difficulty writing the proper function for param 2.

Here is my array:

Array
    (
    [release_date] => Array
        (
            [type] => date
            [value] => 1999-03-31
        )

    [duration] => Array
        (
            [type] => time
            [value] => 136
        )
    [directors] => Array
        (
            [type] => page
            [value] => 13,14
        )
    [writers] => Array
        (
            [type] => page
            [value] => 13,14
        )
    [release_us] => Array
        (
            [type] => date
            [value] => 1999-03-30
        )
    [release_ge] => Array
        (
            [type] => date
            [value] => 1999-06-16
        )
    )

I'd like my return array to have only the arrays where release_ is present.. so it would look like:

Array
    (
    [release_date] => Array
        (
            [type] => date
            [value] => 1999-03-31
        )

    [release_us] => Array
        (
            [type] => date
            [value] => 1999-03-30
        )
    [release_ge] => Array
        (
            [type] => date
            [value] => 1999-06-16
        )
    )
Mike
  • 980
  • 3
  • 15
  • 29

2 Answers2

2
function preg_grep_keys( $pattern, $input, $flags = 0 )
{
    $keys = preg_grep( $pattern, array_keys( $input ), $flags );
    $vals = array();
    foreach ( $keys as $key )
    {
        $vals[$key] = $input[$key];
    }
    return $vals;
}

The usage:

preg_grep_keys("/release_/", $yourArray);

zavg
  • 10,351
  • 4
  • 44
  • 67
1

Just create a foreach to loop through your original array:

$nArr = array();
foreach($arr as $key => $value) {
    if(strpos($key, 'release_') !== false) {
        $nArr[$key] = $value;
    }
}

EDIT

Or in functional form:

function checkKeys($arr, $keyCheck) {
    $nArr = array();
    foreach($arr as $key => $value) {
        if(strpos($key, $keyCheck) !== false) {
            $nArr[$key] = $value;
        }
    }
    return $nArr;
}

And then to use $release = checkKeys($myArray, 'release_');

Jon
  • 4,746
  • 2
  • 24
  • 37