2013-10-01 3 views
0

У меня есть массив, который в зависимости от моего ввода возвращает другое имя для определенного узла. Например, ниже I имя ключевого узла - n1:ModemProduct1207, но оно также может быть n1:ModemProduct1308.Как найти массив с регулярным выражением

мне интересно, есть ли способ, чтобы иметь что-то вроде этого:

$array ['n1:ModemProducts'] ['n1:ModemProduct'. (regex here like"n1:ModemProduct[\d0-9]{4}+")]; 
$modemProducts = $array ['n1:ModemProducts'] ['n1:ModemProduct1207']; 

Я попробовал несколько вариантов, но не мог заставить его работать.

+2

Покажите нам, что вы попробовали! – ComFreek

+2

RTFM: http://php.net/preg_grep http://php.net/array_keys –

+0

Вы должны добавить к своему вопросу: Пример структуры массива (ввода) желаемого результата (вывода). – FrankieTheKneeMan

ответ

2

Маленькой функция для одномерного массива:

function filterProducts($array, $pattern){ 
    $result = array(); 
    foreach($array as $key => $value){ 
    if (preg_match($pattern, $key)){ 
     $result[$key] = $value; 
    } 
    } 
    return $result; 
} 

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

$results = filterProducts($array['n1:ModemProducts'], '/n1:ModemProduct[\d]{4}/'); 
+0

спасибо Ярослав, спасибо, работал как шарм. – user1960170

0

$array = array('Armenia', 'America', 'Algeria', 'India', 'Brazil', 'Croatia', 'Denmark');

$fl_array = preg_grep('/^A.*/', $array);

print_r($fl_array);

для Referance вы можете увидеть. http://ask.amoeba.co.in/php-search-in-an-array-for-values-matching-a-pattern-regex-wildcard/

Я пытаюсь решить ваш problam

Надеется, что это Помощь

Благодаря Anand

+0

ГЭС, желающих совместить * ключ * с регулярным выражением, а не значениями. – immulatin

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