개인적으로는 변수의 존재 여부를 판단하는 PHP의 문법적 디자인이 실패했다고 생각합니다. 업무 분담이 불분명하고 경계가 불분명하여 판단에 허점을 남기기 쉽습니다. 기능이 많은 것 같지만 모호한 디자인은 PHP가 약한 타입의 언어라고 할 수 없고 구현하는 사람의 문제입니다. 오늘은 재미있는 것들을 소개하겠습니다.
isset
변수가 설정되어 있고 null이 아닌지 감지합니다.
isset ( mixed $var , mixed $... = ? ) : bool
한 번에 여러 매개변수가 전달되면 각 매개변수는 왼쪽에서 오른쪽으로 Isset에 의해 판단됩니다. , 중간 어딘가에 변수가 통과하지 못하면 즉시 중지됩니다.
isset()은 변수와 함께만 사용할 수 있습니다. 다른 매개변수를 전달하면 구문 분석 오류가 발생하기 때문입니다.
상수가 설정되었는지 확인하려면 정의된() 함수를 사용할 수 있습니다.
isset()을 사용하여 객체의 액세스할 수 없는 속성을 확인하는 경우 __isset() 메서드가 정의되면 이 오버로드된 메서드가 호출됩니다.
unset()]을 사용하여 변수가 해제된 경우 더 이상 isset()이 아닙니다.
정의되지 않은 변수는 구문 오류를 보고하지 않습니다.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(isset($a)); // false var_dump(isset($b)); // true var_dump(isset($c)); // true var_dump(isset($c['name'])); // false var_dump(isset($d)); // false var_dump(isset($a, $b, $c, $d)); // false // var_dump(isset("abc")); // 语法错误 // var_dump(isset(tt())); // 语法错误 // var_dump(isset(MY_CONST)); // 语法错误
객체의 변수를 확인하는데 안전하게 사용할 수 있습니다.
// instead of writing isset($abc) && isset($abc->def) && isset($abc->def->ghi); // or in a shorter form isset($abc, $abc->def, $abc->def->ghi); // you can just write isset ($abc->def->ghi);
empty()
변수가 존재하지 않는지, 비어있는지 판단하세요.
empty ( mixed $var ) : bool
정의되지 않은 변수는 구문 오류를 보고하지 않습니다.
매개변수는 반드시 변수일 필요는 없습니다.
empty()는 본질적으로 !isset($var) || $var == false와 동일합니다.
var가 존재하고 비어 있지 않고 0이 아닌 값이면 false를 반환하고, 그렇지 않으면 true를 반환합니다.
보이지 않는 객체 속성에 empty()를 사용하면 __isset() 메서드가 있으면 호출됩니다.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(empty($a)); // true var_dump(empty($b)); // true var_dump(empty($c)); // true var_dump(empty($c['name'])); // true var_dump(empty($d)); // true var_dump(empty("abc")); // false var_dump(empty(tt())); // true // var_dump(empty(MY_CONST)); // 语法错误
!
비어 있는지 확인하세요. 정의되지 않은 변수는 PHP 알림을 보고하고 구문 오류는 보고되지 않으며 프로그램이 종료되지 않는지 여부도 확인할 수 있습니다.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(!$a); // true var_dump(!$b); // true var_dump(!$c); // true var_dump(!$c['name']); // true PHP Notice: Undefined index: name var_dump(!$d); // true PHP Notice: Undefined index: name var_dump(!("abc")); // false var_dump(!tt()); // true // var_dump(!MY_CONST); // 语法错误
?:
삼항 연산자의 약어입니다.
$c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']
그래서 판단의 근거는 여전히 비어 있는지 판단하는 것입니다. 정의되지 않은 변수는 PHP 알림을 보고하고 구문 오류는 보고되지 않으며 프로그램이 종료되지 않는지 여부도 확인할 수 있습니다.
??
$a ?? 10 等价于 isset($a) ? $a : 1
Induction
존재 여부 판단: isset, ??
존재하지 않는지, 비어 있는지 판단: 비어 있음()
여부 판단 비어 있음, 권장되지 않음 존재 여부를 확인하는 데 사용: !, ?:
권장 학습: php 비디오 튜토리얼
위 내용은 PHP의 ?:, ??, isset 및 비어 있음은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 산 및 기본 데이터베이스 모델을 비교하여 특성과 적절한 사용 사례를 자세히 설명합니다. 산은 금융 및 전자 상거래 애플리케이션에 적합한 데이터 무결성 및 일관성을 우선시하는 반면 Base는 가용성 및

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

이 기사에서는 PHP에서 암호를 보호하기 위해 PHP에서 Password_hash 및 Password_Verify 사용의 이점에 대해 설명합니다. 주요 주장은 이러한 기능이 자동 소금 생성, 강한 해싱 알고리즘 및 Secur를 통해 암호 보호를 향상 시킨다는 것입니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 PHP의 XSS 공격을 방지하기위한 전략, 입력 소독, 출력 인코딩 및 보안 향상 라이브러리 및 프레임 워크 사용에 중점을 둔 전략에 대해 설명합니다.

이 기사는 각각의 사용시기에 중점을 둔 PHP의 인터페이스 및 추상 클래스 사용에 대해 설명합니다. 인터페이스는 관련없는 클래스 및 다중 상속에 적합한 구현없이 계약을 정의합니다. 초록 클래스는 일반적인 기능을 제공합니다


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구
