背景:プロジェクトに CakePHP を使用していますが、列/フィールドに NULL を持つ DB レコードを見つけて保存するとどうなるか疑問に思っていました。http://goldapplesoftware.ca/blog/2011-09-storing-null-values-database-cakephpおよびCakePHP: Find where field is not nullによると、CakePHP は (一般的に) MySQL NULL 列を PHP の NULL に変換するようです。価値。これは私の直感 (DB の NULL => PHP の NULL) には最適ですが、PHP では驚くほどトリッキーです。
配列スロットが定義されているかどうかを確認したいのですが、値がNULLであるため、注意が必要です。
完全だが紛らわしいhttp://php.net/manual/en/types.comparisons.phpを読んだ後、設定、設定解除、およびnullのいくつかのページ(最も便利なのはhttp://php.netを含む) /manual/en/language.types.null.php ) Check if Variable exists と === true とほぼ同じ結論に達しました。つまり、変数が定義されている (ただし、値が null である) かどうかを次のように確認できます。
if (isset($array['x']) && $array['x'] === NULL)
(または、配列の場合:
if( array_key_exists('x', $array) && $array['x'] === NULL)
)
私の質問: PHP が変数を内部で処理する方法について、簡潔でできれば直観的な説明を探しています。
読んだすべてのことを熟考した後、私が持っていた最も近いメンタル モデルは JavaScript Scope Chain ( Javascript の Scope Chain ) であることに気付きました。PHP で変数を定義すると、シンボル テーブル/エントリにシンボルが追加され、その変数に NULL を割り当てても名前は削除されませんが、値が NULL で上書きされます。また、設定を解除すると名前が削除されます。テーブル。
これは何が起こっているのかに近いですか?誰かがより良い説明を持っていますか?