2011-08-03 5 views
2
function StringCount($searchstring, $findstring) 
     { 
      return (strpos($searchstring, $findstring) === false ? 0 : count(split($findstring, $searchstring)) - 1); 
     } 

문자열에서 부분 문자열의 수를 반환합니다.이 함수 구문을 설명하십시오.

무엇을 의미합니까? === false ? 0 : 이 말은 그렇지 않다는 것을 의미합니까? 아니면이 경우 서면 쓰기를 호출하는 방법입니까?

답변

0

strpos는 부울 FALSE를 반환하지만 FALSE로 평가되는 부울이 아닌 값 (예 : 0 또는 "")을 반환 할 수도 있습니다.

좋은 예 StringCount는 ("스택", "유래 ')이 (가 3 피연산자를 의미) 삼원 연산자의 타입 0

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

경우 리턴 것, 그리고 짧은 형태 if then else 절의.

if(a) 
{ 
    b 
} 
else 
{ 
    c 
} 

그래서 본질적으로는이 같은 것입니다 :

a ? b : c는 다음과 같이 확장 될 수

$strPos; 
if (($searchstring, $findstring) === false) 
{ 
    $strPos=0 
} 
else 
{ 
    $strPos=count(split($findstring, $searchstring)) 
} 

반환 strpos ($ strPos-1);

+0

이 설명은 함수에 래핑 된 경우 더 완전합니다. 왜냐하면 모든 것은 b 또는 c를 반환하기 때문입니다. 또한 trinary 후크라고도합니다. –

+1

1. "삼자". 실제로, C'ish 언어에는 다른 일반적인 것들이 거의 없기 때문에 * 삼항 연산자라고 불리는 것을 자주 듣게 될 것입니다. – cHao

+0

'x? y : z'와'if (x) {y} else {y}'는 완전히 똑같은 것은 아닙니다. 예,이 방법으로 설명 할 때 초보자를 이해하는 것이 더 쉽지만 아니요, 동일하지 않습니다 ;-) – VolkerK

0

strpos($searchstring, $findstring)이 거짓 인 ternary condition

경우 그것은 년대에 substr_count() (http://www.php.net/manual/en/function.substr-count.php)를 사용하는 것이 좋습니다 생각 0, 그렇지 않으면 count(split($findstring, $searchstring)) - 1

$findstring$searchstring에서 발견되지 않은 경우 strpos 바늘이 건초 더미에서 발견 된 위치의 정수를 반환입니다 허위 진술에 대한 3 = 필요 0

이유

그래서 반환합니다. ===을 사용하여 구입하면 부울을 얻습니다.

관련 문제