Hi list,
The following doesn't strike me as consistent behavior:
$a = new ArrayObject();
$a["foobar"] = NULL;
echo (int) isset( $a["foobar"] ); // Output: 1
While it's technically correct, I find it confusing. The reason is
probably because of a array_key_exists (or property_exists) check within
offsetExists() that do not take return false on a NULL
value, unlike
isset().
What say you ?
- Mark
Hello,
Hi list,
The following doesn't strike me as consistent behavior:
$a = new ArrayObject();
$a["foobar"] = NULL;echo (int) isset( $a["foobar"] ); // Output: 1
While it's technically correct, I find it confusing. The reason is probably
because of a array_key_exists (or property_exists) check within
offsetExists() that do not take return false on aNULL
value, unlike
isset().What say you ?
This is indeed a small inconsistency. The problem is that by its name,
offsetExists() should return true on those cases (similarly to
array_key_exists or property_exists). Since it is directly called
within isset(), isset() should return true as well. The problem is
that checking the value would cause a offsetGet() to be called, which
will be a BC break, so I'm not sure if it's worth changing.
Regards
- Mark
--
--
Etienne Kneuss
http://www.colder.ch
Men never do evil so completely and cheerfully as
when they do it from a religious conviction.
-- Pascal
Hello,
On Tue, Jan 13, 2009 at 4:43 PM, Mark van der Velden mark@dynom.nl
wrote:Hi list,
The following doesn't strike me as consistent behavior:
$a = new ArrayObject();
$a["foobar"] = NULL;echo (int) isset( $a["foobar"] ); // Output: 1
While it's technically correct, I find it confusing. The reason is
probably
because of a array_key_exists (or property_exists) check within
offsetExists() that do not take return false on aNULL
value, unlike
isset().What say you ?
This is indeed a small inconsistency. The problem is that by its name,
offsetExists() should return true on those cases (similarly to
array_key_exists or property_exists). Since it is directly called
within isset(), isset() should return true as well. The problem is
that checking the value would cause a offsetGet() to be called, which
will be a BC break, so I'm not sure if it's worth changing.
Hmm, maybe still worthwhile to classify it as a bug fix? :)
regards,
Lukas Kahwe Smith
mls@pooteeweet.org