strstr() is not a way to avoid type-checking with strpos().



If $needle is the last character in $haystack, and testing $needle as a boolean by itself would evaluate to false, then testing strstr() as a boolean will evaluate to false (because, if successful, strstr() returns the first occurrence of $needle along with the rest of $haystack).



<?php

findZero ( '01234' ); findZero ( '43210' ); findZero ( '0' ); findZero ( '00' ); findZero ( '000' ); findZero ( '10' ); findZero ( '100' ); function findZero ( $numberString ) {

if ( strstr ( $numberString , '0' )) {

echo 'found a zero' ;

} else {

echo 'did not find a zero' ;

}

}

?>



Also, strstr() is far more memory-intensive than strpos(), especially with longer strings as your $haystack, so if you are not interested in the substring that strstr() returns, you shouldn't be using it anyway.



There is no PHP function just to check only _if_ $needle occurs in $haystack; strpos() tells you if it _doesn't_ by returning false, but, if it does occur, it tells you _where_ it occurs as an integer, which is 0 (zero) if $needle is the first part of $haystack, which is why testing if (strpos($needle, $haystack)===false) is the only way to know for sure if $needle is not part of $haystack.



My advice is to start loving type checking immediately, and to familiarize yourself with the return value of the functions you are using.



Cheers.