В чем ошибка такой записи на PHP?

81
16 февраля 2022, 16:20
$a = 2;
if ($a == ("1" or "3")) {
    echo "GOOD";
} else {
    echo "BAD";
}

При таком условии выводит "GOOD".. Не понятно почему. Что не так в условии? Тип переменной не влияет. Я проверил в значениях int и string, все равно условие некорректно. Поясните, где ошибка?

Answer 1

Рассмотрим if ($a == ("1" or "3")) по действиям:

  1. ("1" or "3") - две строки, интерпретатору задаётся вопрос: "1" или "2" есть true? Обе строчки непустые, каждая приравнивается кtrue.
  2. $a == true - переменная $a не пустая, в ней не 0, что при сравнении с bool преобразует таковое в true

Булев тип php

Таблица сравнения типов в PHP

READ ALSO
Не могу спрятать порт Apache

Не могу спрятать порт Apache

Столкнулся с такой проблемой, мне нужно чтобы сайт открывался по ip на веб-сервере Apache по порту 8080Всё работает, но

99
Проблема с формой смены пароля

Проблема с формой смены пароля

всем приветвозникла небольшая проблема, подскажите, пожалуйста, как исправить

131
При импорте товара выдаёт ошибку Undefined index: sku (opencart)

При импорте товара выдаёт ошибку Undefined index: sku (opencart)

В контроллере сделал импорт модели $this->load->model('catalog/product');, также есть массив данных товара, примерно такой:

105