PHP if ($ some_var == 1) всегда возвращает true, даже если это не так? - PullRequest
5 голосов
/ 19 ноября 2011

Эта проблема проста, но я не уверен, как лучше всего обойти ее.

Если переменная содержит число, как я могу убедиться, что оператор if возвращает true только если действительно $some_var равно единице?

Ответы [ 4 ]

11 голосов
/ 19 ноября 2011

вам нужно использовать 3 равных

if($some_var ===1){

здесь больше информации http://php.net/manual/en/language.operators.comparison.php

9 голосов
/ 19 ноября 2011

Число 1 - это сокращение от «true». Чтобы указать, что это должно быть на самом деле, вы хотите использовать оператор тройного равенства. Это гарантирует, что оно соответствует как значению, так и типу (1 и целое число соответственно).

$some_var = 1;
$other_var = "1";

$some_var === 1; // True
$other_var === 1; // False
4 голосов
/ 19 ноября 2011
if($some_var === 1) //checks also type
3 голосов
/ 19 ноября 2011

В идеале вы должны использовать ===, но недостатком этого является проверка как значения, так и типа. Это должно быть хорошо, если вы хотите проверить на 1 как целое число. Но так как 1 также может быть строковым значением (данные, представленные формами, всегда являются строками), сравнение === может завершиться неудачно. Попробуйте вместо этого:

if ($my_var == 1 && is_numeric($my_var)) {

    echo 'My condition is true. Woo hoo!';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...