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]   

> Без описания
AskhsiV
Отправлено: 09 Октября, 2011 - 13:19:48
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2008  


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




ребята.. товарищи.. господа.. Люди!

поможите вобщем)
уже больше часа медитирую на участок кода и не знаю как его оптимизировать, но и оставить его так совесть не позволяет(

короче, вот такое полотенце:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($array as $k => $v) {
  3.   if($k == 'aaa' && $v == 1) { $zzz[] = 1; }
  4.   if($k == 'aaa' && $v == 2) { $zzz[] = 2; }
  5.   if($k == 'bbb' && $v == 1) { $zzz[] = 3; }
  6.   if($k == 'bbb' && $v == 2) { $zzz[] = 4; }
  7.   if($k == 'ccc' && $v == 1) { $zzz[] = 5; }
  8.   if($k == 'ccc' && $v == 2) { $zzz[] = 6; }
  9.   if($k == 'ddd' && $v == 1) { $zzz[] = 7; }
  10.   if($k == 'ddd' && $v == 2) { $zzz[] = 8; }
  11. }
  12.  
 
 Top
SAD
Отправлено: 09 Октября, 2011 - 13:33:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




PHP:
скопировать код в буфер обмена
  1. if ($k == 'aaa') {
  2.     $zzz[] = ($v%2==0)?2:1;
  3. }
 
 Top
AskhsiV
Отправлено: 09 Октября, 2011 - 13:43:01
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2008  


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




SAD это помогает сократить код вдвое:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($array as $k => $v) {
  3.   if($k == 'aaa') { $zzz[] = ($v%2==0)?2:1; }
  4.   if($k == 'bbb') { $zzz[] = ($v%2==0)?4:3; }
  5.   if($k == 'ccc') { $zzz[] = ($v%2==0)?6:5; }
  6.   if($k == 'ddd') { $zzz[] = ($v%2==0)?8:7; }
  7. }
  8.  


а возможно ли ещё оптимизировать, ведь значений ключа может быть больше
 
 Top
SAD
Отправлено: 09 Октября, 2011 - 13:45:50
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




AskhsiV пишет:
ведь значений ключа может быть больше


так может обрисуете ситуацию в целом? чего гадать то
 
 Top
AskhsiV
Отправлено: 09 Октября, 2011 - 14:39:37
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2008  


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




цель - сбор ошибок при импорте некоего списка из файла в БД.
в каждой линии есть несколько полей, пока что 4 (aaa, bbb, ccc, ddd).
у каждого поля есть два типа ошибок, критичная ($v == 1) и нет ($v == 2).
в массив $zzz собираем все ошибки с этого ряда, для дальнейшего отображения.
 
 Top
OrmaJever Модератор
Отправлено: 09 Октября, 2011 - 17:03:17
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Незнаю насколько работоспособно, но вот так
PHP:
скопировать код в буфер обмена
  1. $arr = array('aaa' => 0, 'bbb' => 2, 'ccc' => 4, 'ddd' => 6);
  2. foreach($array as $k => $v) $zzz[] = $arr[$k] + $v;


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
AskhsiV
Отправлено: 09 Октября, 2011 - 19:27:30
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2008  


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




OrmaJever спасибо! то, что надо, даже даёт возможность регулировать кол-во ошибок для каждого поля)
 
 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