function StringCount($searchstring, $findstring)
{
return (strpos($searchstring, $findstring) === false ? 0 : count(split($findstring, $searchstring)) - 1);
}
它返回字符串中子字符串的ocourance数,但为什么不使用count?
=== false ? 0 :
的含义是什么
我的意思是如果这种称呼不是,或者是否有办法称这种类型的写作?
答案 0 :(得分:1)
这是一种三元运算符(意味着它需要3个操作数),并且是if then else子句的简短形式。
a ? b : c
可以扩展为:
if(a)
{
b
}
else
{
c
}
所以从本质上说它是这样的:
$strPos;
if (($searchstring, $findstring) === false)
{
$strPos=0
}
else
{
$strPos=count(split($findstring, $searchstring))
}
return strpos($ strPos-1);
答案 1 :(得分:1)
http://www.php.net/manual/en/language.operators.comparison.php - 关于===
http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary - 约(expr1) ? (expr2) : (expr3)
但是,我觉得在这个函数中使用substr_count()
(http://www.php.net/manual/en/function.substr-count.php)会更好
答案 2 :(得分:0)
因为strpos返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或“”。
一个很好的例子是,如果
,StringCount(“stackoverflow”,“stack”)将返回0function StringCount($searchstring, $findstring)
{
return (strpos($searchstring, $findstring) == false ? 0 : count(split($findstring, $searchstring)) - 1);
}
答案 3 :(得分:0)
如果strpos($searchstring, $findstring)
为假,则为0
,否则为count(split($findstring, $searchstring)) - 1
因此,如果$findstring
中未找到$searchstring
,请返回0
你需要3 =
这个错误陈述的原因是strpos返回在大海捞针中找到针的整数。使用===
购买即可获得布尔值。