Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск подстрок в массиве
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Поиск подстрок в массиве

Страниц (1): [1]
 

1. Alexey2151985 - 30 Августа, 2011 - 08:45:24 - перейти к сообщению
Здравствуйте, нужно релизовать такую задачу:
Есть массив, заполненный файлами из директории. Нужно найти в этом массиве строку удовлетворяющую определенным критериям, например:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $arr[0]="003_yy.txt"
  3. $arr[1]="004_yy.txt"
  4. $arr[2]="005_yy.txt"
  5.  

Нужно найти строку, которая начинается 004 и разбить ее на подстроки по символу _.
Вопрос: неужели нужно перебирать все элементы массива в цикле?
2. EuGen - 30 Августа, 2011 - 09:08:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2. "003_yy.txt",
  3. "004_yy.txt",
  4. "005_yy.txt"
  5. );
  6.  
  7. $sSearch='004';
  8. $rgResult=array_filter($rgData, function($item) use ($sSearch){return (bool)preg_match('/^'.$sSearch.'/i', $item);});
  9. //var_dump($rgResult);
  10.  
3. Alexey2151985 - 30 Августа, 2011 - 10:13:36 - перейти к сообщению
$sSearch='004';
$rgResult=array_filter($rgData, function($item) use ($sSearch){return (bool)preg_match('/^'.$sSearch.'/i', $item);});
//var_dump($rgResult);
[/PHP][/quote]

а что означает оператор use?
4. Мелкий - 30 Августа, 2011 - 10:20:53 - перейти к сообщению
Alexey2151985, вся конструкция - создание анонимной функции. Работает только с PHP5.3

Alexey2151985 пишет:
Есть массив, заполненный файлами из директории.

Вариант 2:

И потом уже работать с массивом только нужных элементов.
5. Alexey2151985 - 30 Августа, 2011 - 12:50:19 - перейти к сообщению
Спасибо всем за ответы.

 

Powered by ExBB FM 1.0 RC1