@NkDev

Где кроется ошибка в коде php?

Имеется следующий код:

<?php

<?php


$url = "";

echo preg_match("#admin#", $url, $match) . PHP_EOL; //0

switch ($url) {
    case (preg_match("#admin#", $url, $match) ? true : false):
        echo "1";
        break;
    case "":
        echo "2";
        break;
    default:
        echo "default";
        break;
}


Вопреки ожиданиям срабатывает первый case (выводит 1). Не могу понять почему, ведь preg_match возвращает 0.
Подскажите, почему так?

sandbox.onlinephpfunctions.com/code/db3cb6a031d0c0...
  • Вопрос задан
  • 169 просмотров
Решения вопроса 2
bitniks
@bitniks
Go/PHP/Symfony developer
Потому что идет проверка на равенство $url и false. А они равны, если учитывать приведение типов, поэтому выполняется первый case. Вы как-то не так используете switch
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пустая строка равна false при нестрогом сравнении.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы