ホームページ >バックエンド開発 >PHPの問題 >PHP の ?:、??、isset、empty は何を意味しますか?

PHP の ?:、??、isset、empty は何を意味しますか?

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-07-20 16:29:102151ブラウズ

個人的には、PHPの変数の有無を判定する構文設計が失敗していると感じています。分業が曖昧で境界が曖昧で、判定に抜け穴が残りやすいです。嫌いです。このように機能がたくさんあるように見えて曖昧な設計ですが、これは PHP が弱い型付け言語であることに起因するものではなく、実装者の問題です。今日は楽しいものをいくつか紹介します。

PHP の ?:、??、isset、empty は何を意味しますか?

#isset

変数が設定されているか、null ではないかを確認します。

isset ( mixed $var , mixed $... = ? ) : bool

  • 一度に複数のパラメータが渡された場合、各パラメータは左から右にIssetで判定され、変数が渡されなかった場合は即停止します。

  • isset() は変数でのみ使用できます。他の引数を渡すと解析エラーが発生するためです。

  • 定数が設定されているかどうかを確認したい場合は、define() 関数を使用できます。

  • 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[&#39;name&#39;])); // 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 が存在し、空でもゼロでもない値の場合は 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[&#39;name&#39;])); // 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[&#39;name&#39;]); // 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[&#39;name&#39;] ?: 10 等价于 !$c[&#39;name&#39;] ? 10 : $c[&#39;name&#39;]

したがって、その判断の基礎は依然として、それが空であるかどうかを判断することです。未定義の変数は PHP 通知を報告しますが、構文エラーは報告せず、プログラムは終了しません。

#??

$a ?? 10 等价于 isset($a) ? $a : 1
概要

存在するかどうかを確認します: isset、??
  • 存在しないか空であるかどうかを判断します: empty()
  • それが空であるかどうかを判断します。存在するかどうかを確認します:!、?:
  • 推奨される学習:
  • php ビデオ チュートリアル

以上がPHP の ?:、??、isset、empty は何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。