解释这个函数语法

时间:2011-08-03 17:54:16

标签: php function

function StringCount($searchstring, $findstring)
        {
            return (strpos($searchstring, $findstring) === false ? 0 :  count(split($findstring, $searchstring)) - 1);
        }

它返回字符串中子字符串的ocourance数,但为什么不使用count?

=== false ? 0 :的含义是什么 我的意思是如果这种称呼不是,或者是否有办法称这种类型的写作?

4 个答案:

答案 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)

答案 2 :(得分:0)

因为strpos返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或“”。

一个很好的例子是,如果

,StringCount(“stackoverflow”,“stack”)将返回0
function StringCount($searchstring, $findstring)
{
  return (strpos($searchstring, $findstring) == false ? 0 : count(split($findstring, $searchstring)) - 1);
}

答案 3 :(得分:0)

这是ternary condition

如果strpos($searchstring, $findstring)为假,则为0,否则为count(split($findstring, $searchstring)) - 1

因此,如果$findstring中未找到$searchstring,请返回0

你需要3 =这个错误陈述的原因是strpos返回在大海捞针中找到针的整数。使用===购买即可获得布尔值。