Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2012, 14:05   #1
G-leb
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 18
По умолчанию оптимизирывать как-то бы..

Как-то можнро проще написать на PHP ету конструкцию *?? как видите переменные повторяются условие только разное .. и таких конструкций достаточно много напишите наглядный пример ОПТИМИЗИРОВАВ ЕТОТ КОД..... ПОЖАЛУЙСТО

Код HTML:
if ($power>9 and $power<20 ) { $text_pover='Бонус параметра Сила ≥ 10:'; $UrоnMin=0; $UrоnMax=3; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=2; } 
elseif ($power>19 and $power<30) { $text_pover='Бонус параметра Сила ≥ 20:';$UrоnMin=0; $UrоnMax=6; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=4; } 
elseif ($power>29 and $power<40) { $text_pover='Бонус параметра Сила ≥ 30:';$UrоnMin=0; $UrоnMax=10; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=7; } 
elseif ($power>39 and $power<50) { $text_pover='Бонус параметра Сила ≥ 40:';$UrоnMin=0 ; $UrоnMax=15; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=12; } 
elseif ($power>49 and $power<75) { $text_pover='Бонус параметра Сила ≥ 50:';$UrоnMin=0; $UrоnMax=20; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=20; } 
elseif ($power>74 and $power<100) { $text_pover='Бонус параметра Сила ≥ 75:';$UrоnMin=0; $UrоnMax=30; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=33; } 
elseif ($power>99 and $power<125) { $text_pover='Бонус параметра Сила ≥ 100:';$UrоnMin=0; $UrоnMax=40; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=55; } 
elseif ($power>124 and $power<150) { $text_pover='Бонус параметра Сила ≥ 125:';$UrоnMin=0; $UrоnMax=50; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=75; } 
elseif ($power>149 and $power<175) { $text_pover='Бонус параметра Сила ≥ 150:';$UrоnMin=0; $UrоnMax=60; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=90; } 
elseif ($power>174 and $power<200) { $text_pover='Бонус параметра Сила ≥ 175:';$UrоnMin=0; $UrоnMax=70; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=110; } 
elseif ($power>199 ) { $text_pover='Бонус параметра Сила ≥ 200:';$UrоnMin=0; $UrоnMax=80; $mod_mownoctu_yron_MIN=0; $mod_mownoctu_yron_MAX=130; }
G-leb вне форума Ответить с цитированием
Старый 09.11.2012, 14:22   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Все эти параметры нужно хранить в базе и делать простой sql запрос
Либо создать какую-нибудь структуру типа массива и "ходить" по нему
Если хотите использовать свой страшный концепт, то можно переписать if-elseif на switch(true)
Cronos20 вне форума Ответить с цитированием
Старый 09.11.2012, 14:25   #3
G-leb
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 18
По умолчанию

о не .. база умрет ... не плохо было б в текстовом , или массиве .. но не знаю как реализовать .. нужен пример кода ... а из учебника пример не понимаю как к своему применить
G-leb вне форума Ответить с цитированием
Старый 09.11.2012, 14:26   #4
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

можно что-то типо этого:

PHP код:
<?php

    $params 
= array(
        
10 => array(
            
'uron_max' => 3,
            
'mod_mownoctu_yron_MAX' => 2,
        ),
        
20 => array(
            
'uron_max' => 6,
            ...
        ),
        
30 => ...
    );
    
    for(
$i=$power;$i>=10,$i--) {
        if (isset(
$params[$i])) {
            
$text_pover 'Бонус параметра Сила ≥ '.$i.':';
            
$UrоnMin 0
            
$UrоnMax $params[$i];
            
$mod_mownoctu_yron_MIN 0;
            
$mod_mownoctu_yron_MAX $params[$i];
            break;
        }
    }

?>
buriat вне форума Ответить с цитированием
Старый 09.11.2012, 14:58   #5
G-leb
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 18
По умолчанию Ошибку выдает синтаксическую ... подправте (

PHP код:
     $params = array( 10 => array( 'power_q' 10'UrоnMin' 0'UrоnMax' 3'mod_mownoctu_yron_MIN' 'mod_mownoctu_yron_MAX' ),
                      
20 => array( 'power_q' 20'UrоnMin' 0'UrоnMax' 6'mod_mownoctu_yron_MIN' 'mod_mownoctu_yron_MAX' )
                    ); 
     
    for(
$i=$power;$i>=10,$i--) { 
        if (isset(
$params[$i])) { 
            
$text_pover 'Бонус параметра Сила ≥ '.$power_q.':'
            
$UrоnMin $params[$i];  
            
$UrоnMax $params[$i]; 
            
$mod_mownoctu_yron_MIN $params[$i]; 
            
$mod_mownoctu_yron_MAX $params[$i]; 
            break; 
        } 
    } 
G-leb вне форума Ответить с цитированием
Старый 09.11.2012, 15:12   #6
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

учи php arrays. Внутри должно быть не =, а =>.
buriat вне форума Ответить с цитированием
Старый 09.11.2012, 15:17   #7
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Цитата:
Сообщение от G-leb Посмотреть сообщение
PHP код:
    for($i=$power;$i>=10,$i--) { 
        if (isset(
$params[$i])) { 
            
$text_pover 'Бонус параметра Сила ≥ '.$power_q.':'
            
$UrоnMin $params[$i];  
            
$UrоnMax $params[$i]; 
            
$mod_mownoctu_yron_MIN $params[$i]; 
            
$mod_mownoctu_yron_MAX $params[$i]; 
            break; 
        } 
    } 
Еще к $params[$i] надо добавить соотвествующий ключ.
PHP код:
$params[$i]['power_q']; // for example 
Это уже я недосмотрел.
buriat вне форума Ответить с цитированием
Старый 09.11.2012, 15:36   #8
G-leb
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 18
По умолчанию Не работает ((( пишет Parse error: syntax error, unexpected T_FOR in Z

PHP код:
 $params = array ( 10 => array( 'power_q' =>  10'UrоnMin' =>  0'UrоnMax' =>  3'mod_mownoctu_yron_MIN' =>  'mod_mownoctu_yron_MAX' =>  ),
                      
20 => array( 'power_q' =>  20'UrоnMin' =>  0'UrоnMax' =>  6'mod_mownoctu_yron_MIN' =>  'mod_mownoctu_yron_MAX' =>  )
                    )

                
     
    for(
$i=$power;$i>=10,$i--) { 
        if (isset(
$params[$i])) { 
            
$text_pover 'Бонус параметра Сила ≥ '.$params[$i]['power_q'].':'
            
$UrоnMin $params[$i] ['UrоnMin'];  
            
$UrоnMax $params[$i] ['UrоnMax']; 
            
$mod_mownoctu_yron_MIN $params[$i] ['mod_mownoctu_yron_MIN']; 
            
$mod_mownoctu_yron_MAX $params[$i] ['mod_mownoctu_yron_MAX']; 
            break; 
        } 
    } 
G-leb вне форума Ответить с цитированием
Старый 09.11.2012, 17:27   #9
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

...удалить...

Последний раз редактировалось 9i.; 09.11.2012 в 18:31.
9i. вне форума Ответить с цитированием
Старый 10.11.2012, 11:17   #10
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

в строчке перед for ";" забыл
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сам лабиринт ввести не как постоянную как тут а считыванием с файла Голем Помощь студентам 10 17.07.2010 18:07