@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...
  • Вопрос задан
  • 170 просмотров
Решения вопроса 2
bitniks
@bitniks
Go/PHP/Symfony developer
Потому что идет проверка на равенство $url и false. А они равны, если учитывать приведение типов, поэтому выполняется первый case. Вы как-то не так используете switch
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пустая строка равна false при нестрогом сравнении.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы