うまくいけば、これはあまりにも多くのロジックの組み合わせは必ずしもいえ助けない...
empty()
はそれのいずれかが存在しないか、を意味し、値が「空」と考えられているかどうかを確認するために使用されている、ことができます値はfalseです(http://php.net/manual/en/function.empty.php)。
ArrayAccessを実装するクラス([]を使用して配列型アクセスを許可するクラスなど)でこれを確認できるようにするには、このプロセスに2つの段階があることを意味します。
最初に要素が存在しますか?これは、あなたがチェックしている要素でoffsetExists()
を呼び出すことによって行われます。したがって$data = [1,2];
で、要素2をチェックするとoffsetExists()
はfalseを返します(0と1だけが値を持ちます)。empty()
はtrueを返します。条件1(項目が存在しない)が真であるためです。存在する要素1に対して呼び出された場合、empty()
はfalse(http://php.net/manual/en/arrayaccess.offsetexists.php)を返します。
第2に、項目が存在する場合、empty()
の2番目の部分には、値がfalseの場合も空とみなされます。 offsetGet()
は、テストしている要素から値を取得します。したがって$data[true,false]
は、要素0に対してoffsetGet()
が呼び出されると、値0である位置0の値を返します。条件2は、値がfalseの場合、この場合はそうではないので、empty()
はfalseを返します。しかし、値がfalseの要素1が呼び出された場合、empty()
はtrueを返します。
ありがとうございました! –