2016-05-24 4 views
-1

Я просто знаю if(var) работает только в состоянии true или 1 до сих пор. Но когда я помещаю что-то вроде переменной string, и другие числа, такие как 12332, также работают. Является ли значение if(var) Работает в переменной true or number or string?

<?php 
    $Check = "sosdjf"; echo : true 
//$Check = 12332;  echo : true 
//$Check = false;  echo : false 
if($Check){ 
    echo "true"; 
} 
else{ 
    echo "false"; 
} 

мы обычно проверяем, например, if($Check == "sosdjf") это сделать if condition, но здесь if($Check) это так же делать if condition! Вот почему ? Это правда?

+0

это не ясно, что вы спрашивая здесь – rsz

+0

вам нужно объяснение ?? Попробуйте использовать '$ Check === true'. –

+4

http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting –

ответ

0

возвращающих Когда $ Проверки не NULL, NOT 0, НЕ Ложное, а не "", а не "0", а не неопределенный (с уведомлением), а не пустой массив иначе это даст вам истинное

if($Check){ 
    echo "true"; 
} 
else{ 
    echo "false"; 
} 
+1

... не" ", а не" 0 ", а не неопределенным (с уведомлением), а не пустой массив –

0
try this instead - 

in php 
$var = 123; //number 
$var1 = "variable"; //string 

here $var return true for both variables 

if you want to check wether it is a numeric or string do this - 
$check = is_numeric($var); //it will return true 

then return your desired output - 
if($check){ 
    echo "it is a number"; //true 
}else{ 
    echo "it is a not number"; //false 
} 
+0

'is_numeric', если выражение может быть оценено числом. 'is_numeric (" 123 ")' is 'true', тогда как' gettype ("123") 'дает' "string" и 'gettype (123)' дает '" integer "'. –

+0

is_numeric ("123") // true и is_numeric (123) // true - оба будут true. если вы дадите как is_numeric ("123test") // false, потому что это строка. – codegeek

+0

Проверьте это: var_dump (is_numeric ("1e2")); var_dump (is_numeric (1e2)); var_dump (is_numeric ("0x1a2b3c")); var_dump (is_numeric (0x1a2b3c)); var_dump (is_numeric ("0b1")); var_dump (is_numeric (0b1)); var_dump (is_numeric ("012")); var_dump (is_numeric (012)); var_dump ("012" == 012); var_dump (intval ("012") == 012); var_dump ((int) "012" == 012); var_dump ((float) "012" == 012); var_dump (floatval ("012") == 012); var_dump (intval ("0b1")); var_dump ((int) "0b1"); var_dump (intval ("0b1") == 0b1); var_dump (1 == 0b1); var_dump (010 == 8); ' –

0

Просто, чтобы добавить что-то к смеси, см empty() функцию:

var_dump(empty(false)); // true 
var_dump(empty(null)); // true 
var_dump(empty("")); // true 
var_dump(empty(0)); // true 
var_dump(empty("0")); // true 
+1

'var_dump (пусто ([])); var_dump (пусто ($ undefined_var)); ' –

1

Итак, давайте взглянем на код;

Вы назначаете $check к значению sosdjf

Если мы делаем простой if($check) на переменном, так как переменная установлена ​​она будет вычисляться true. Это происходит потому, что PHP является преобразование его в boolean, который будет конвертировать в true, если он не отвечает следующим критериям: an empty string or the string "0"

Что вы действительно должны делать это быть явно с чеком

$check = 'someword'; 
if ($check === true) { 
    echo 'True'; 
} else { 
    echo 'False'; 
} 

выше будет выходной False, потому что $check не является boolean, поэтому он не выполняет строгую проверку типа, поскольку обе стороны не равны.

Для осветления на струнных,

  • Любой пустой string вычисляет FALSE
  • Любое непустое string, что не 0 вычисляет TRUE
Смежные вопросы