Правильно ли? Код (PHP): $type = $row['type']; $perm = 'perm ' $permgroup = 'permgroup' $rown = 'rown' $rmem = 'rmem' $money = 'money' $item = 'item' if (strcmp($type, $perm) == 0) { $type = 'Права'; } else { if (strcmp($type, $permgroup) == 0) { $type = 'Статус'; } else { if (strcmp($type, $rgown) == 0) { $type = 'Право владельца'; } else { if (strcmp($type, $rgmem) == 0) { $type = 'Право участника'; } else { if (strcmp($type, $money) == 0) { $type = 'Деньги'; } else { if (strcmp($type, $item) == 0) { $type = 'Предмет'; } else { $type = "Тип"};};};};};};
Код (PHP): $perm = 'perm'; $permgroup = 'permgroup'; $rown = 'rown'; $rmem = 'rmem'; $money = 'money'; $item = 'item'; - Испивал сразу.. Операторы выбора/ Переключатель switch Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков: Код (PHP): switch(expression) // переключающее выражение { case value1: // константное выражение 1 statements; // блок операторов break; case value2: // константное выражение 2 statements; break; default: statements; }
Спасибо кэп Не нам покажи, что это, а для себя его открой и подумай, зачем я тебе о нем сказал. Посмотри на свой код и подумай о свитче. Потом снова на нагромождение своих elseif-ов и снова на свитчи. И да, у тебя там в каждом elseif-е производится вызов функции, который можно в общем-то сделать всего один раз.
Надо не PHP изучать, раз уж совсем новичок, а общие принципы программирования и алгоритмизации. switch - это не фича пхп, это конструкция, которой, пожалуй, столько же лет, сколько и IF-у. И есть он, как и if, в 99% языков программирования. В той или иной синтаксической форме, но есть. Так что может сначала выучить основы абстрактные, а потом уже в какую-то специализацию лезть, м?
Код (Text): Id Игрок Тип Предмет Amount Extra Delete 1 ZOMBI Права item 1 1 Удалить! 2 ZOMBI Статус item 1 1 Удалить! 3 ZOMBI Деньги item 1 1 Удалить! 7356 ZOMBI Предмет item 1 1 Удалить! 7357 ZOMBI Право владельца item 1 1 Удалить! 7359 ZOMBI Право участника item 1 1 Удалить! И так работает
Да и окей Добавлено спустя 2 минуты 9 секунд: Мне всегда нужен пример кода, его я разбираю изучаю и пишу. примеров нет :"D Добавлено спустя 8 минут 6 секунд: Так? Код (PHP): <? switch($type) { case perm: echo ("Права"); case permgroup: echo ("Статус"); case rgown: echo ("Право владельца"); case rgmem: echo ("Право участника"); case money: echo ("Деньги"); case item: echo ("Предмет"); break; default: echo ("Тип"); } ?> Добавлено спустя 2 минуты 11 секунд: Я пример нашел Код (PHP): <form action = "http://localhost/PHP/chapt2/switch.php" method="get"> number: <input type="text" name="number"/><br> <input type="submit"/> </form> <? switch($number) { case 1: echo ("one "); case 2: case 3: echo ("free"); case 4: case 5: echo ("five"); case 6: case 7: echo ("seven"); case 8: case 9: echo ("nine"); break; default: echo ("This isn't number or number is > 9 or < 1"); } ?>
Нет, не так, ты написал проваливающийся свитч. Это, конечно, порой нужный инструмент, но только тогда, когда его пишет тот, кто знает, чем отличается свитч с проваливающимися кейсами от каноничного свитча. Читай внимательнее документацию, е-мое. В твоем случае получился кривопроваливающийся избыточный свитч, вызывающие полный перебор вариантов независимо от того, что ему пришло на вход. В лучших традициях быдлокодинга, в общем. И это должно тебя настораживать.
Цвет волос не имеет значение. Главное что в самой голове Добавлено спустя 2 минуты 2 секунды: Если этот запрос произойдет около 1000000 раз, то... ? Код (PHP): if (strcmp($type, $perm) == 0) { $type = 'Права'; } else { if (strcmp($type, $permgroup) == 0) { $type = 'Статус'; } else { if (strcmp($type, $rgown) == 0) { $type = 'Право владельца'; } else { if (strcmp($type, $rgmem) == 0) { $type = 'Право участника'; } else { if (strcmp($type, $money) == 0) { $type = 'Деньги'; } else { if (strcmp($type, $item) == 0) { $type = 'Предмет'; } else { $type = "Тип";}; }; }; }; }; };
То он затратит до 6 раз больше времени, чем свитч. Грубо, там, где свитч отработает (с учетом 1кк раз) 1 секунду, эта конструкция может жеваться до 6 секунд, а то и больше. Плюс она менее читабельна. Плюс ее потом сложнее сопровождать. Шестрикратная елочка - это плохо. А если будет 20 вариантов? Будет 20кратная елочка?
Всего вариантов пока столько сколько есть, но это только 1-я страница, есть еще неск на которых тоже самое надо сделать. Только там уже 5к вариантов :"D Добавлено спустя 2 минуты 8 секунд: Код (PHP): <script type="text/javascript"> function isNotMax(e){ e = e || window.event; var target = e.target || e.srcElement; var code=e.keyCode?e.keyCode:(e.which?e.which:e.charCode) switch (code){ case 13: case 8: case 9: case 46: case 37: case 38: case 39: case 40: return true; } return target.value.length <= target.getAttribute('maxlength'); } </script> <textarea rows="5" cols="45" maxlength="10000" onkeypress="return isNotMax(event)"> </textarea> <input type="text" rows="5" cols="45" maxlength="10000" onkeypress="return isNotMax(event)" /> Добавлено спустя 6 минут 13 секунд: Я немного внёс изменения в код Код (PHP): if (strcmp($type, $perm) == 0) { $type = 'Права'; } elseif (strcmp($type, $permgroup) == 0) { $type = 'Статус'; } elseif (strcmp($type, $rgown) == 0) { $type = 'Право владельца'; } elseif (strcmp($type, $rgmem) == 0) { $type = 'Право участника'; } elseif (strcmp($type, $money) == 0) { $type = 'Деньги'; } elseif (strcmp($type, $item) == 0) { $type = 'Предмет'; } elseif { $type = "Тип";}; Добавлено спустя 4 минуты 30 секунд: Верно? Код (PHP): switch ($type) { case $perm: echo "Права"; break; case $permgroup: echo "Статус"; break; case $rgown: echo "Право владельца"; break; case $rgmem: echo "Право участника"; break; case $money: echo "Деньги"; break; case $item: echo "Предмет"; break; default; echo 'Тип'; break; };
И эта правда с https://php.net/manual/ru/control-structures.switch.php Добавлено спустя 6 минут 52 секунды: Очень круто, если бы еще в таблице выводилось было бы круче Код (Text): 4321111111111111111111111111111 ПраваСтатусДеньгиПредметПраво владельцаПраво участника Id Игрок Тип Предмет Amount Extra Delete 1 ZOMBI perm 14535324 1 1 Удалить! 2 ZOMBI permgroup 145325:4532 1 1 Удалить! 3 ZOMBI money 1 1 1 Удалить! 7356 ZOMBI item 1 1 1 Удалить! 7357 ZOMBI rgown 1 1 1 Удалить! 7359 ZOMBI rgmem 1 1 1 Удалить!