부울 값에 대한 php if 문 : $ var === true vs $ var
-
13-09-2019 - |
문제
나는이 질문이 정말로 중요하지 않다는 것을 알고있다. 그러나 나는 궁금했다 :
다음 중 가장 잘 사용하는 경우 진술이 가장 빠르고 가장 빠릅니까?
<?php
$variable = true;
if($variable === true)
{
//Something
}
if($variable)
{
// Something
}
?>
나는 ===가 부울 가치와 정확히 일치하는 것임을 알고있다. 그러나 실제로 개선이 있습니까?
해결책
사용 if ($var === true)
또는 if ($var)
스타일의 문제가 아니라 정확성의 문제입니다. 왜냐하면 if ($var)
와 같다 if ($var == true)
. 그리고 ==
비교는 유형을 확인하지 않습니다. 그래서 1 == true
사실이지만 1 === true
거짓입니다.
다른 팁
속도에 관한 한, 나는 Niels에 동의합니다. 아마도 무시할 수 있습니다.
진술이 가장 적합한 경우 테스트하기 가장 좋은 한, 대답은 아마도 예상 주조와 $ 변수가 가질 수있는 값에 달려있을 것입니다.
$ 변수가 0과 1을 true/false 플래그로 사용하는 경우 ($ variable) 또는 if (! $ variable)이 작동하지만 strpos ()에서 정수 결과 인 경우 문제가 발생합니다 ... 가능하면 0 / 1 대신 실제 부울 값을 사용하는 것이 좋습니다.
... 어쩌면 이것은 명확하게하는 데 도움이 될 것입니다. 다양한 결과를 보려면 $ var의 변형을 언급하십시오.
<?php
$var = true;
$var = 1;
$var = false;
$var = 0;
if ( $var ) {
echo 'var = true <br />';
}
if ( $var === true ) {
echo 'var is a boolean and = true';
}
if ( !$var ) {
echo 'var = false <br />';
}
if ( $var === false ) {
echo 'var is a boolean and = false';
}
그냥 사실 :
time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r == true) {} }'
time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r) {} }'
두 번째는 첫 번째보다 빠릅니다.
나는 PHP의 기술적 인 것들에 대해 깊이 깊은 것은 아니지만 첫 번째 경우
if($variable === true)
$ 변수는 IF 문이 true가 되려면 True와 정확히 동일한 유형을 가져야합니다. 다시 말해, $ 변수는 True로 해결해야 할뿐만 아니라 부울이어야합니다. 그래서 이것은 2 개의 작업, 가치 검사 및 유형 확인입니다.
두 번째 경우
if($variable)
$ variable은 true로만 해결해야합니다. 따라서 가치 점검 만 발생합니다. 나는 그것이 컴퓨터가 조금 더 적은 시간을 소비한다고 추론한다.
실제로 말하면 : 속도의 차이는 아마도 무시할 수 있습니다.
=== 첫 번째 바늘이 건초 더미에서 위치 0에있을 때 strstr/strist에서 정말 도움이됩니다. === 또는! == 사용하지 않으면 손에 버그가있을 수 있습니다.
$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;