Но почемуто работают только последние 6 строк, т.е. исходя из полученных значений с
sm51 по
sm56 переменным присваиваются нужное значение
sm_on, а все остальные полученные значения игнорируются и переменным присваивается значение
smПочему так происходит?
Я в php не силен... пытался сократить этот код, используя операторы: "|", "||", "^", "xor", "or", но тоже ничего не получилось...
Надеюсь понятно изложил суть проблемы
Спустя 7 минут, 48 секунд (1.06.2009 - 20:14) Kuliev написал(а):
freed-master
Что это за индуский код.
Спустя 7 минут, 27 секунд (1.06.2009 - 20:21) jetistyum написал(а):
Да, такой код можно в учебниках публиковать .. в примере того, как не нужно делать
смотри в сторону структур управления "
switch - case"
Спустя 8 минут, 44 секунды (1.06.2009 - 20:30) Kuliev написал(а):
freed-master
Цитата |
Но почемуто работают только последние 6 строк, т.е. исходя из полученных значений с sm51 по sm56 переменным присваиваются нужное значение sm_on, а все остальные полученные значения игнорируются и переменным присваивается значение sm
|
А почему они должны работать???
Ты же их сам перезаписываешь, вот и получается что у тебя в итоге данные из диапазона
PHP |
if ($type_sm == "sm51") { $sm1 = "sm_on"; } else {$sm1 = "sm";} if ($type_sm == "sm52") { $sm2 = "sm_on"; } else {$sm2 = "sm";} if ($type_sm == "sm53") { $sm3 = "sm_on"; } else {$sm3 = "sm";} if ($type_sm == "sm54") { $sm4 = "sm_on"; } else {$sm4 = "sm";} if ($type_sm == "sm55") { $sm5 = "sm_on"; } else {$sm5 = "sm";} if ($type_sm == "sm56") { $sm6 = "sm_on"; } else {$sm6 = "sm";} |
Вот сюда внимательно посмотри, а потом на свой скрипт и подумай... ( чем различаются картинки)
PHP |
{ $sm1 = "sm_on"; } else {$sm1 = "sm";} { $sm2 = "sm_on"; } else {$sm2 = "sm";} { $sm3 = "sm_on"; } else {$sm3 = "sm";} { $sm4 = "sm_on"; } else {$sm4 = "sm";} { $sm5 = "sm_on"; } else {$sm5 = "sm";} { $sm6 = "sm_on"; } else {$sm6 = "sm";} |
Спустя 11 минут, 30 секунд (1.06.2009 - 20:41) sergeiss написал(а):
Kuliev - насчет индусского кода ты прав, как никогда
Мне кажется, будет лучше, если автор озвучит свою идею - что он хотел сделать.
И еще мне кажется, что в данном случае будет лучше (удобнее, да и "красивее") использовать ассоциативные массивы.
Спустя 6 минут, 10 секунд (1.06.2009 - 20:48) Kuliev написал(а):
sergeissЕсли честно, то я непонял для чего ему такая конструкция и что она должна делать, но код весьма забавный (не поленился скопипастить)
Спустя 17 минут, 39 секунд (1.06.2009 - 21:05) sergeiss написал(а):
Цитата (Kuliev @ 1.06.2009 - 21:48) |
Если честно, то я непонял для чего ему такая конструкция... |
Скорее всего, где-то в форме возможен выбор одного из 5 блоков данных. А уже там 6 выборов. Вот он и пытается отловить...
Индусскими Какими-то способами
Спустя 43 минуты, 2 секунды (1.06.2009 - 21:48) freed-master написал(а):
Цитата |
Скорее всего, где-то в форме возможен выбор одного из 5 блоков данных. А уже там 6 выборов. |
Почти так. Только не в форме, а... короче пытаюсь сделать меню (трехуровневое).
Есть 5 основных разделов, каждый из которых содержит по 6 подразделов, каждый подраздел, в свою очередь, содержит еще ссылки.
Цитата |
Если честно, то я непонял для чего ему такая конструкция... |
А вся эта байда нужна для того что бы путем замены стиля (фона кнопки) показать пользователю в каком разделе какого подраздела он находится.
Меню первого уровня (главные разделы) я поступил так же:
Код |
$type_m = isset($_GET['m_id'])?$_GET['m_id']:null;
if ($type_m == "m1") { $m1 = "menu_on"; } else {$m1 = "menu";} if ($type_m == "m2") { $m2 = "menu_on"; } else {$m2 = "menu";} if ($type_m == "m3") { $m3 = "menu_on"; } else {$m3 = "menu";} if ($type_m == "m4") { $m4 = "menu_on"; } else {$m4 = "menu";} if ($type_m == "m5") { $m5 = "menu_on"; } else {$m5 = "menu";} |
Все хорошо работает. А вот со вторым уровнем никак не разбирусь.
Цитата |
смотри в сторону структур управления "switch - case" |
Посмотрел, но как применить к моему горе-меню не въехал.
Что-то типа того?:
Код |
switch($sm_id) { case sm11: case sm21: case sm31: case sm41: case sm51: case sm61: $sm1 = "menu_on"; break; default: $sm1 = "menu"; } |
Спустя 1 час, 1 минута, 18 секунд (1.06.2009 - 22:50) freed-master написал(а):
Кажется разобрался, сделал так:
PHP |
switch($type_sm) { case "sm11": case "sm21": case "sm31": case "sm41": case "sm51": $sm1 = "sm_on"; break; default: $sm1 = "sm"; } switch($type_sm) { case "sm12": case "sm22": case "sm32": case "sm42": case "sm52": $sm2 = "sm_on"; break; default: $sm2 = "sm"; } switch($type_sm) { case "sm13": case "sm23": case "sm33": case "sm43": case "sm53": $sm3 = "sm_on"; break; default: $sm3 = "sm"; } switch($type_sm) { case "sm14": case "sm24": case "sm34": case "sm44": case "sm54": $sm4 = "sm_on"; break; default: $sm4 = "sm"; } switch($type_sm) { case "sm15": case "sm25": case "sm35": case "sm45": case "sm55": $sm5 = "sm_on"; break; default: $sm5 = "sm"; } switch($type_sm) { case "sm16": case "sm26": case "sm36": case "sm46": case "sm56": $sm6 = "sm_on"; break; default: $sm6 = "sm"; } |
! |
|
М |
| Оформляй код согласно правилам форума! |
Kuliev |
Спустя 5 минут, 58 секунд (1.06.2009 - 22:56) Alchemist написал(а):
Спустя 5 минут, 45 секунд (1.06.2009 - 23:01) freed-master написал(а):
В смысле? опять набокапорил? или это в общем?
Спустя 20 минут, 44 секунды (1.06.2009 - 23:22) Alchemist написал(а):
это было в общем... держи:
PHP |
$sm1 = $sm2 = $sm3 = $sm4 = $sm5 = $sm6 = 'sm'; if (preg_match('/^sm\d{2}$/',$type_sm)) ${'sm'.$type_sm[3]} = 'sm_on'; |
Спустя 26 минут, 1 секунда (1.06.2009 - 23:48) freed-master написал(а):
Спустя 1 день, 18 часов, 38 минут, 20 секунд (3.06.2009 - 18:26) freed-master написал(а):
Чуть подумал кое-что убрал и... вобщем изменил имена получаемых гэтом переменных. Теперь они выглядят не так: "sm11" а так "11" - просто числа. Соответственно необходимо что-то изменить здесь:
PHP |
$sm1 = $sm2 = $sm3 = $sm4 = $sm5 = $sm6 = 'sm'; if (preg_match('/^sm\d{2}$/',$type_sm)) ${'sm'.$type_sm[3]} = 'sm_on'; |
Но мне здесь не все понятно.
В первой строке вроде все ясно, во второй и третей понятен только смысл - считывает с урл-а значение переменной $type_sm и отделяет 2 цифры после sm, но как подробно (дословно) расшифровать запись '/^sm\d{2}$/' ? дополните и поправтье пожалуйста:
'/ - кавычки
^ - ? (кажется это "или"?)
sm\ - смотрит после sm
d{2} - считывает 2 символа (а почему d - типа double?)
$ - ?
/' - кавычки
Спустя 10 минут, 19 секунд (3.06.2009 - 18:37) twin написал(а):
'/ - кавычки ограничитель маски
^ - ? (кажется это "или"?) не, либо привязка к началу строки
sm\ - смотрит после sm просто sm
d{2} - считывает 2 символа (а почему d - типа double?) \d{2) любые 2 цифры
$ - ? привязка к концу строки
/' - кавычки ограничитель маски
Спустя 6 минут, 9 секунд (3.06.2009 - 18:43) freed-master написал(а):
А что значит тройка в третей строке: $type_sm[3]
Спустя 2 минуты, 8 секунд (3.06.2009 - 18:45) twin написал(а):
Спустя 31 минута, 16 секунд (3.06.2009 - 19:16) freed-master написал(а):
Получается нужно только убрать пару символов:
PHP |
$sm1 = $sm2 = $sm3 = $sm4 = $sm5 = $sm6 = 'sm'; if (preg_match('/d{2}$/',$type_sm)) ${$type_sm[3]} = 'sm_on'; |
Но нет...
Спустя 40 минут, 35 секунд (3.06.2009 - 19:57) glock18 написал(а):
^ - ? (кажется это "или"?) не, либо привязка к началу строки
я бы сказал - здесь привязка к началу строки. чего человека грузить))
freed-master
почитай про регулярные выражения лучше. это базовый синтаксис.
Спустя 16 минут, 54 секунды (3.06.2009 - 20:14) twin написал(а):
Ди ни божеж мой. Если в именах одни цифры, не нужна там регулярка. и функция эта не нужна. Вот где загрузка. А это пусть бы знал...
Спустя 26 минут, 26 секунд (3.06.2009 - 20:40) freed-master написал(а):
На звание программиста я не притендую, подскажите пожалуйста как сократить этот код:
PHP |
switch($type_sm) { case "11": case "21": case "31": case "41": case "51": $sm1 = "sm_on"; break; default: $sm1 = "sm"; } switch($type_sm) { case "12": case "22": case "32": case "42": case "52": $sm2 = "sm_on"; break; default: $sm2 = "sm"; } switch($type_sm) { case "13": case "23": case "33": case "43": case "53": $sm3 = "sm_on"; break; default: $sm3 = "sm"; } switch($type_sm) { case "14": case "24": case "34": case "44": case "54": $sm4 = "sm_on"; break; default: $sm4 = "sm"; } switch($type_sm) { case "15": case "25": case "35": case "45": case "55": $sm5 = "sm_on"; break; default: $sm5 = "sm"; } switch($type_sm) { case "16": case "26": case "36": case "46": case "56": $sm6 = "sm_on"; break; default: $sm6 = "sm"; } |
Спустя 8 минут, 40 секунд (3.06.2009 - 20:49) twin написал(а):
Ну ведь написали уже код, куда ж короче...
Просто если ты решил одни цифры в названиях оставить, то и нафиг тебе регулярка теперь:
PHP |
$sm1 = $sm2 = $sm3 = $sm4 = $sm5 = $sm6 = 'sm'; ${'sm'.(int)$type_sm} = 'sm_on'; |
Спустя 6 минут, 5 секунд (3.06.2009 - 20:55) freed-master написал(а):
Что-то не хочет он ничего менять...
Спустя 5 минут, 20 секунд (3.06.2009 - 21:00) twin написал(а):
Ну ёпрст. Чуть чуть фантазии:
PHP |
$sm1 = $sm2 = $sm3 = $sm4 = $sm5 = $sm6 = 'sm'; $type_sm = substr($type_sm,1); ${'sm'.(int)$type_sm} = 'sm_on'; |
_____________
Всем, кто заинтересован, могу помочь начать
зарабатывать на forex.
Пишите в личку или на e-mail:
flash-dirt@yandex.ru