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 :: Помогите разобраться что не так

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: От чего зависит работоспособность preg_replace
OldBob
Отправлено: 12 Апреля, 2013 - 12:26:51
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Приветствую всех. Подскажите почему так происходит.
Есть вот такой код
PHP:
скопировать код в буфер обмена
  1. if(!$n_item_row) {$n_item_row=$item_row;}
  2. reset ($n_item_row);
  3.              foreach($n_item_row as $id=>$item_name){
  4.         reset ($color_row);
  5.         foreach($color_row as  $color_name){
  6.        
  7.         $color_name2="dark maple";
  8.         //if($color_name===$color_name2)    -> True;
  9.         $item_name=trim(preg_replace('/'.$color_name.'/i', "",$item_name));
  10.        
  11.                 $n_item_row[$id]=$item_name;
  12.         }
  13.         }
  14.        
  15.  
  16. print_r ($n_item_row);

В таком виде всё работает как надо, но заметил такой момент
Если поменять имя item_name вот так
PHP:
скопировать код в буфер обмена
  1. if(!$n_item_row) {$n_item_row=$item_row;}
  2. reset ($n_item_row);
  3.              foreach($n_item_row as $id=>$item_name){
  4.         reset ($color_row);
  5.         foreach($color_row as  $color_name){
  6.        
  7.         $color_name2="dark maple";
  8.         //if($color_name===$color_name2)    -> True;
  9.         $item_name2=trim(preg_replace('/'.$color_name.'/i', "",$item_name));
  10.        
  11.                 $n_item_row[$id]=$item_name2;
  12.         }
  13.         }
  14.        
  15.  
  16. print_r ($n_item_row);

preg_replace перестаёт работать.
При этом, если подставить строку для поиска со значением присвоенным вручную, хотя они идентичны опять все работает.
PHP:
скопировать код в буфер обмена
  1. if(!$n_item_row) {$n_item_row=$item_row;}
  2. reset ($n_item_row);
  3.              foreach($n_item_row as $id=>$item_name){
  4.         reset ($color_row);
  5.         foreach($color_row as  $color_name){
  6.        
  7.         $color_name2="dark maple";
  8.         if($color_name===$color_name2)    echo 'True';
  9.         $item_name2=trim(preg_replace('/'.$color_name2.'/i', "",$item_name));
  10.        
  11.                 $n_item_row[$id]=$item_name2;
  12.         }
  13.         }
  14.        
  15.  
  16. print_r ($n_item_row);

Так работает. Что то совсем логику не понимаю
 
 Top
esterio
Отправлено: 12 Апреля, 2013 - 12:36:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




PHP:
скопировать код в буфер обмена
  1. $n_item_row[$id]=trim(preg_replace('/'.$color_name2.'/i', "",$item_name));

и reset не нужно делать. foreach см сделает
 
 Top
OldBob
Отправлено: 12 Апреля, 2013 - 13:09:16
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Про foreach буду иметь виду, мне правда с reset как то нагляднее. А на счет строки это я скопипастил неверно Просто результат тот же вот и не заметил. По логике мне нужно было так
PHP:
скопировать код в буфер обмена
  1. if(!$n_item_row) {$n_item_row=$item_row;}
  2. reset ($n_item_row);
  3.              foreach($n_item_row as $id=>$item_name){
  4.         reset ($color_row);
  5.         foreach($color_row as  $color_name){
  6.        
  7.         $color_name2="dark maple";
  8.         //if($color_name===$color_name2)  echo   ' True';
  9.         $item_name=trim(preg_replace('/'.$color_name.'/i', "",$item_name));
  10.        
  11.                 //$n_item_row[$id]=$item_name;
  12.         }
  13.         $n_item_row[$id]=$item_name;
  14.         }
  15.        
  16.  
  17. print_r ($n_item_row);
 
 Top
OldBob
Отправлено: 15 Апреля, 2013 - 07:17:30
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Так и чего, по сути вопроса никто не подскажет?
 
 Top
esterio
Отправлено: 15 Апреля, 2013 - 08:48:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Чем помочь-то. Я вообще не понимаю для чего етот код. и какие данние он обрабативает. лучше почитайте про регулярные виражения. Думаю тогда у Вас все станет на свои места.

П.С. также включите вивод ошибок
 
 Top
OldBob
Отправлено: 15 Апреля, 2013 - 10:14:06
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




esterio пишет:
Я вообще не понимаю для чего етот код. и какие данние он обрабативает.

Вырезает из названия товаров названия цветом.
esterio пишет:
лучше почитайте про регулярные виражения

Ну так выражение то написал и оно работает. Непонятно почему при изменении имени перестает работать и при этом при ручном вводе названия цвета опять начинает работать.
 
 Top
esterio
Отправлено: 15 Апреля, 2013 - 10:20:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
OldBob
Отправлено: 15 Апреля, 2013 - 10:47:32
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Спасибо. Допер.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB