isset 및 is_ 분석null의 차이

2264 단어 issetis null
isset 및 is_null 무슨 차이야, 수첩에 나오는 말, isset과 is_null의 기능은 거의 완전히'반대로'...isset 아니면 is_null의 상반된 별명?에이, 차이라고 하기엔 정말 많네~ 모든 게 달라서:is_null은 함수이고 isset은 문장입니다.isset은 문장으로 echo,print와 마찬가지로 PHP 자체의 언어 구조이다.이is_null은 함수입니다. 일반적인 함수와 마찬가지로 가변 함수로 호출할 수 있습니다.너는 아마도, 됐어, 됐어, 나는 함수와 문장의 차이를 알지만, 도대체 TMD의 어떤 차이야?에이, 이른바 문장, 언어 구조, 즉 언어 자체가 지원하는 문장, 표지부호.예를 들어 for,foreach,continue 등은 문법 분석을 할 때'지워진다'(논리적으로 대체된다).우리 isset이라는 문장이 문법 분석 과정에서 어떻게 지워지는지 봅시다.
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
?>

좋은 웹페이지 즐겨찾기