Использование array_key_exists с preg_match - PullRequest
3 голосов
/ 04 июля 2010

Я пытаюсь определить, есть ли совпадение или совпадения в массиве на основе шаблона,

пример массива:

Array
(
    [author_id] => 1
    [channel_id] => 1
    [site_id] => 1
    [entry_id] => 6
    [url_title] => test_title_with_file2
    [title] => Test Title with file
    [field_id_1_directory] => 1
    [field_id_4_directory] => 1
    [submit] => Submit
    [entry_date] => 1278219110
)

Я бы хотелопределить, что ключ или ключи field_id_x_directory существуют, и, если они существуют, зациклите каждый из них и запустите функцию, которая будет использовать 'x' в качестве переменной.1010 *

Iain.

Ответы [ 3 ]

11 голосов
/ 04 июля 2010
foreach (array_keys($arr) as $k) {
    if (preg_match('/^field_id_(\\d+)_directory$/', $k, $matches)) {
        //do sth with $arr[$k] and $matches[1]
    }
}
1 голос
/ 13 апреля 2014
  $input = array (
  'hello'=>2,
  'hello stackoverflow'=>1,
  'hello world',
  'foo bar bas'=>4
);
$matches  = preg_grep ('/^hello$/i', array_keys($input));
 echo $input[$matches[0]];

вернет 2

1 голос
/ 20 ноября 2013

Лучшей альтернативой будет:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...