이것 사이에 차이점이 있습니까?
if (is_null($var)) {
do_something();
}
이?
if ($var === null) {
do_something();
}
변수에 null이 있는지 여부를 확인할 때 어떤 형식이 더 낫습니까? 내가 알아야 할 엣지 케이스가 있습니까? (모든 변수를 초기화하므로 존재하지 않는 변수는 문제가되지 않습니다.)
답변
변수가 초기화 된 경우 (이 상황에서 이것이 중요한지 100 % 확실하지는 않지만, 변수가 정의되지 않은 경우 두 솔루션 모두 경고를 표시 할 수 있음), 기능적으로 동일합니다. 나는 추정 ===
빨리 함수 호출의 오버 헤드를 제거로 비록 소폭 될 것이다.
그것은 당신이 당신의 상태를 어떻게 보는지에 달려 있습니다.
===
엄격한 데이터 비교를위한 것입니다. NULL에는 ‘값’이 하나만 있으므로 NULL (널 ‘값’의 PHP 상수)과 비교하는 데 사용할 수 있습니다.
is_null
변수가 NULL 데이터 유형인지 확인합니다.
당신이 선택하는 것은 당신에게 달려 있습니다.
답변
✅
이다 true
❌
이다 false
| isset | is_null | ===null | ==null | empty |
|-------|---------|---------|---------|---------|---------|
| null | ❌ | ✅ | ✅ | ✅ | ✅ |
| true | ✅ | ❌ | ❌ | ❌ | ❌ |
| false | ✅ | ❌ | ❌ | ✅ | ✅ |
| 0 | ✅ | ❌ | ❌ | ✅ | ✅ |
| 1 | ✅ | ❌ | ❌ | ❌ | ❌ |
| \0 | ✅ | ❌ | ❌ | ❌ | ❌ |
| unset | ❌ | ✅ | ✅ | ✅ | ✅ |
| "" | ✅ | ❌ | ❌ | ✅ | ✅ |
요약 : 🔸 ♦ ️🔸
empty
다음과 같다==null
is_null
다음과 같다===null
isset
의 역수is_null
및===null
답변
둘 다 똑같 is_null
습니다. 코드를 더 읽기 쉽게 만들기 때문에 사용 합니다.
답변
php가 is_foo () 유형의 함수를 너무 많이 갖는 것이 중복 된 것 같으면 표준 비교 연산자를 사용할 수있을 때 프로그래밍 방식으로 호출되는 함수를 고려하십시오.
$arrayOfNullValues = array_filter($myArray, 'is_null');
답변
저는 각각 백만 번의 반복을 테스트하면서 빠른 벤치 마크를 실행했습니다. is_null
완료하는 데 8 초가 걸렸습니다. === null
1을 가져 갔다.
따라서 호출 is_null
은 ===
내 컴퓨터 에서 호출하는 것보다 0.000007 초 더 느립니다 .
최적화하기에 더 유용한 것을 찾을 것입니다.
내 코드 :
<?php
$start = time();
$var = null;
for ($i = 1000000; $i--; ) {
is_null($var);
}
echo time() - $start;
$start = time();
for ($i = 1000000; $i--; ) {
$var === null;
}
echo time() - $start;
답변
매번 연산자 비교를 통해 내장 PHP 함수를 사용합니다.
답변
is_null($var)
$var===null
… 37.8ms 대 2.6ms 보다 약 14 배 느립니다 .
그러나 실제로 나는 이유를 모릅니다.