isset 및 is_ 분석null의 차이
1. 우선 어법 분석을 할 때 isset은 T_로 식별된다ISSET 식별자.2. 문법 분석 단계에서 isset($var)이라는 명령은 Opcode:ZEND_로 분석된다ISSET_ISEMPTY_VARS.
isset은 C 언어의 매크로를 컴파일하거나 실행하기 전에 이미 전개되었다고 생각하는 것을 이해할 수 있다.이것 때문에 표현에 있어서 다음과 같은 차이가 있을 수 있다. 왜냐하면 is_null은 함수이기 때문에 다음과 같은 방식으로 호출할 수 있습니다.
<?php
$var = NULL;
$func = "is_null";
$func($var);
?>
, isset은 문장이기 때문에 이렇게 호출할 수 없습니다.왜냐하면 is_null은 함수이기 때문에 함수 반환값을 매개 변수로 받아들일 수 있지만 isset은 안 된다. (물론 PHP가 지원하려면 사실 가능하다. 단지 컴파일 단계의 복잡도를 증가시켜야 한다.)
<?php
is_null(intval("0x45"));
//OK
isset(intval("0x45"));
//PHP Fatal error: Can't use function return value in write context
is_null(NULL);
//OK
isset(NULL);
//PHP Parse error: syntax error
?>
이렇게 많은 isset의 단점을 말했으니 장점을 말해 보자. isset은 문장이기 때문에 빠르다!천만 번의 간단한 검출 문장 순환에서 비교 결과는 다음과 같다.
<?php
$a="laruence":
isset($a); // : 1.15s
is_null($a); // : 3.89s
?>
isset을 isset이라고 하기 때문에 정의되지 않은 변수를 검출할 때 NOTICE가 발생하지 않는다.
<?php
isset($laruence);
//OK
is_null($laruence);
//PHP Notice: Undefined variable: laruence
?>
그러면 언제 isset을 사용하고 언제 is_를 사용하는지null, 무슨 건의가 있습니까?에이, 내 조언은 함수로 함수로 해야 할 일을 하는 거야~, 쓸데없는 소리처럼 들리는데?isset => is set? => 변수에 할당된 값 (성명) is_null => is null? => 변수가 NULL입니까?또한 is_를 사용하려면null, "===NULL"으로 대체하는 것을 권장합니다. 의미와 is_ 뿐만 아니라null이 일치하고 결과가 일치하며 속도는 isset과 차이가 많지 않다. 천만 번의 간단한 검측 문장 순환에서 비교 결과는 다음과 같다.
<?php
$a="laruence":
isset($a); // : 1.15s
is_null($a); // : 3.88s
$a===NULL; // : 1.22s
?>