PHP If всегда стреляет как истина

php if-statement

614 просмотра

2 ответа

Прежде всего, я знаю, что это уже задавали миллион раз, но ни один из ответов, которые я нашел, кажется, не работает. У меня есть следующее заявление if на моей странице 'Header.php':

<?php
$currentpage = $_SERVER['REQUEST_URI'];
    echo($currentpage);
    if($currentpage == "/recap-2013.php" || "/index.php" ) { ?>
        <script src=... a bunch of HTML
<?php } ?>

Идея состоит в том, чтобы вставить JS, если $ currentpage равен recap-2013.php или index.php, и если нет, ничего не делать.

Я добавил echo($currentpage)туда, чтобы проверить, что мой REQUEST_URI.

Проблема в том, что даже если URI запроса /someotherpage.php, оператор оценивается как true и JS появляется в моем теге head. Я уверен, что это что-то маленькое, что мне не хватает, но я не могу понять, что.

Заранее благодарю за любую помощь!

Автор: Sgolds Источник Размещён: 12.11.2019 09:39

Ответы (2)


6 плюса

Решение

Ваша логика утверждения if неверна. Что вы на самом деле имеете в виду:

if($currentpage == "/recap-2013.php" || $currentpage == "/index.php" ) { ?>

В вашей текущей логике второе выражение всегда будет истинным, поскольку в PHP неточная типизация строки будет оцениваться как логическое значение, а непустая строка всегда будет истинной.

Автор: John Conde Размещён: 26.03.2014 11:02

1 плюс

Это всегда ОГОНЬ как правда. Почему? как видите, независимо от того, каков результат первого условия, оно ОБЯЗАТЕЛЬНО И ВСЕГДА будет верным во втором ...

Ладно посмотрим ...

if($currentpage == "/recap-2013.php" || "/index.php" )

Итак, первое условие будет:

if($currentpage == "/recap-2013.php")

Допустим, результатом этого будет ЛОЖЬ .

Итак, перейдем ко второму условию:

if("/index.php")

КОНЕЧНО и ВСЕГДА ИСТИНА !

Почему? Потому что в условных выражениях только FALSE (bool), 0, NULL, пустая строка и т. Д. ... считаются ложными. В вашей ситуации «/index.php» не является пустой строкой и не имеет значения NULL , поэтому всегда имеет значение TRUE .

Как я понял о ваших условиях, вы пытаетесь подразумевать:

if($currentpage == "/recap-2013.php" || $currentpage == "/index.php" )

ПРИМЕЧАНИЕ. Всегда будьте осторожны с условными выражениями, это всегда приносит нам много пользы.

Автор: YouSer Размещён: 26.03.2014 11:09
Вопросы из категории :
32x32