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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Работа с массивом, замена элементов
Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011 Откуда: Россия
Помог: 0 раз(а)
Сам сообразить не могу [+ браузер "жестчайше" тормозит]. За помощь буду благодарен.
Есть огромный массив - > 5000 тысяч индексов. Внутри строки типа "M N O ..." и так далее. N - может быть любым целым числом. Так вот надо это N заменить на 0.
Я понял, что можно через foreach + регулярки сделать, значение после первого пробела поменять на 0, а потом переписать массив.
Вопрос нубский, так как неделю не трогал php, сессия. Вот решил вернуться в строй
----- In Console We Trust. Code hard. Or die.
fdr21
Отправлено: 22 Июня, 2012 - 15:32:12
Гость
Покинул форум
Сообщений всего: 86
Дата рег-ции: Июнь 2012
Помог: 5 раз(а)
Tox пишет:
Я понял, что можно через foreach + регулярки сделать, значение после первого пробела поменять на 0, а потом переписать массив.
конечно можно
DeepVarvar
Отправлено: 22 Июня, 2012 - 15:37:30
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
array_walk_recursive($arr, 'replace_num');//применит рекурсивно ко всем элементам массива функцию replace_num
function replace_num(&$elem){//параметр передаем по ссылке иначе исходное значение в массиве не изменится
$elem = preg_replace('~\d+~', 0, $elem, 1);// ~ - это самый редковстречающийся знак, поэтому юзаю его в регулярках, ноль ставим без кавычек, что-бы сохранрить тип записи - numeric
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.