• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

[PHP] Проблема с оператором switch

  • Автор темы Автор темы Raskolnikov
  • Дата начала Дата начала

Raskolnikov

Green Team
30.07.2017
67
21
Начал изучать php, написал вот такой код
PHP:
<?php

$i = 60 ;
switch ($i) {
    case $i > 60:
        echo "Скорость превышена!";
        break;
    case $i <= 60 && $i > 0:
        echo "Скорость в норме";
        break;
    case $i == 0:
        echo "Стоишь";
        break; 
    default:
        echo "Скорость не определена";
        break; 
    }
    

?>

Если в переменную i подставить значение 0, то вывод "Скорость превышена!". В чём проблема?
 
Начал изучать php, написал вот такой код
PHP:
<?php

$i = 60 ;
switch ($i) {
    case $i > 60:
        echo "Скорость превышена!";
        break;
    case $i <= 60 && $i > 0:
        echo "Скорость в норме";
        break;
    case $i == 0:
        echo "Стоишь";
        break;
    default:
        echo "Скорость не определена";
        break;
    }
   

?>

Если в переменную i подставить значение 0, то вывод "Скорость превышена!". В чём проблема?

'Это просто счастливое совпадение приведения типов к bool, но работать будет не со всеми значениями и условиями'. Советую использовать "if", "else", с ними не так муторно
 
  • Нравится
Реакции: Raskolnikov
При валидной установке интерпретатора php, данный скрипт НЕ БУДЕТ работать как указал автор. Варианта три:
Код:
switch(вариант) {
case 1: echo 'тс напутал что-то'; break;
case 2: echo 'битый/модифицированный интерпретатор'; break;
case 3: echo 'ошибка железа'; break;
}
 
Начал изучать php, написал вот такой код
PHP:
<?php

$i = 60 ;
switch ($i) {
    case $i > 60:
        echo "Скорость превышена!";
        break;
    case $i <= 60 && $i > 0:
        echo "Скорость в норме";
        break;
    case $i == 0:
        echo "Стоишь";
        break;
    default:
        echo "Скорость не определена";
        break;
    }
 

?>

Если в переменную i подставить значение 0, то вывод "Скорость превышена!". В чём проблема?

Тут дело в особенности php

Дело в том что когда происходит сравнивание $i > 60 результат равен false а это в свою очередь равно 0 и в таком случае результат проверки срабатывает в пользу первого условия.
 
Тут дело в особенности php

Дело в том что когда происходит сравнивание $i > 60 результат равен false а это в свою очередь равно 0 и в таком случае результат проверки срабатывает в пользу первого условия.
Блииин, элементарно ведь! Еслиб ты тут не написал я бы никогда не додумался
 
Тут дело в особенности php

Дело в том что когда происходит сравнивание $i > 60 результат равен false а это в свою очередь равно 0 и в таком случае результат проверки срабатывает в пользу первого условия.
Благодарю за ответ. Я так понимаю данный оператор нерационально использовать в таком виде, правильно будет писать в case конкретные значения без использования операторов сравнения
 
Благодарю за ответ. Я так понимаю данный оператор нерационально использовать в таком виде, правильно будет писать в case конкретные значения без использования операторов сравнения
Именно, если тебе надо проверка используй if
 
  • Нравится
Реакции: Raskolnikov
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD