strstr() непонятки с нулем

  • Автор темы Автор темы ys
  • Дата начала Дата начала

ys

отодвинутый новичок
strstr() непонятки с нулем

Вот упрощенный до предела test case:

1.
<?php
$str = '0';
$need = '0';
if(strstr($str, $need)) echo '+';
else echo '-';
?>

2.
<?php
$str = '1';
$need = '1';
if(strstr($str, $need)) echo '+';
else echo '-';
?>

Вопрос: почему в первом случае '-', а во втором '+' .


Просто наткнулся на вырожденный случай использования функции strstr() и наткнулся на такой эффект.

gettype() - говорит, что все переменные типа string.
php: 4.3.9 as module.
 
В обоих случаях должно быть '+', т.е. TRUE, вот почему в первом случае FALSE?
 
ys
такой же "вырожденный" случай будет, если ты во втором примере будешь использовать Strpos.
 
в первом случае тебе возвращается из strstr() - '0', во втором - '1'.
'0' интерпретируется как false
'1' - как true.

PHP:
//так будет работать всегда
if(strstr($str, $need) !== false)
 
MeLLowD

Вы про функцию strstr(); читали?
Вы про типы переменных читали?
 
tony2001

А понял, те if() интерпретирует, (string) '0' как (integer) 0
во блин, не знал. :)
 
читал

попробуйте такой пример

$str = '0';
if ($str) echo 'true'; else echo 'false';
 
tony2001

Спасибо, пропустил такую строчку:
"пустая строка и строка "0" " преобразуется в булев FALSE.
Да, это не Си :)
 
Интересно, при чём здесь C, в котором
if (0) printf("true");
else printf("false");
так же выдаст false?
 
:)
Найдите мне компилятор C который в таком коде
if ("0") printf ("true");
else printf ("false");
выдаст false :)
 
Сверху