2013-04-14 2 views
1

Я пытаюсь захватить любые данные с ключом «release _» ... Я думаю, что я должен использовать array_filter, но мне сложно написать правильную функцию для param 2 .Поиск частичного совпадения в массиве

Вот мой массив:

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 
     ) 
    ) 

Я хотел бы мое возвращение массива есть только массивы, где release_ присутствует .. так это будет выглядеть:

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 
     ) 
    ) 
+0

Возможный ответ здесь: http://stackoverflow.com/a/1596343/2112743 –

+0

Вы ищете встроенной функции PHP? Потому что цикл 'foreach' будет простым решением. – Uby

ответ

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; 
} 

Использование:

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

1

Просто создайте foreach цикл по исходному массиву:

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

EDIT

Или в функциональной форме:

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

И затем использовать $release = checkKeys($myArray, 'release_');

Смежные вопросы