たとえば、与えられたコード:
if(strstr($key, ".")){
// do something
}
strstrは文字列を返しますが、ブール値としてどのように使用できますか?それはどのように真または偽になりますか?
ここに例があります
<?php
$email = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // prints @example.com
$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
?>
意味:
このstrstr()
関数は、別の文字列内で最初に出現する文字列を検索します。この関数は、文字列の残りの部分(一致点から)を返します。検索する文字列が見つからない場合はFALSEを返します。
strstr(string,search)
string
---->必須。検索する文字列を指定します
search
---->必須。検索する文字列を指定します。このパラメータが数値の場合、数値のASCII値に一致する文字を検索します。
これは単純です。ifステートメントで、空でない値、たとえば空でない文字列がある場合、これはtrueです。例えば:
if("test") { //this is true
}
$value = "test";
if($value) { //this is true
}
$value = 3;
if($value) { //this is true
}
一方、空の変数がある場合、ifステートメントではfalseのように動作します。例えば:
$var = 0;
if($var) { //this is false
}
$var = false;
if($var) { //this is false
}
$var = "";
if($var) { //this is false
}
だからあなたの場合あなたは持っています:
$key = "test.com"
$val = strstr($key, "."); //Return ".com"
if ($val) { //This is not a non empty string so it is true
}
$key = "justtest"
$val = strstr($key, "."); //Return boolean false so it is false
if ($val) { //This is returning boolean false
}
strstrの戻り値は、ブール値(false)または文字列のいずれかです。
$strstr = strstr($key, '.');
if(is_string($strstr)){
echo 'is found';
}
or
if($strstr === false){
echo 'not found';
}
注:文字列はboolにキャストされないため、is_bool($ strtsr)も使用できます(true)
echo is_bool('test') ? 'true' : 'false'; //false