Whazor schreef op dinsdag 29 juli 2008 @ 14:45:
[...]
Dit is wel zo want $_POST is een array en ISSET is voor variabelen. En als je array_key_exists doet kijk je of de key bestaat in de array.
En bij php strict geeft isset fouten en array_key_exists niet.
(zucht)
PHP:
1
2
3
4
| $aap[1] = 2;
var_dump(isset($aap[0]));
var_dump(isset($aap[1]));
var_dump(isset($noot[0])); |
Goh, wat gek, PHP zegt { false, true, false } ipv { true, true, false }. Dan moet dat wel een bug in PHP zijn, want wat Whazor zegt klopt immers altijd

.
En de
documentatie van isset zelf bugt dan natuurlijk ook, want die zegt:
PHP:
1
2
3
4
5
| $a = array ('test' => 1, 'hello' => NULL);
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE |
Het verschil tussen isset() en array_key_exists() is trouwens dat die eerste ook false geeft als een variabele null is (en dus wel gezet is), en dat de tweede een notice geeft als de gerefereerde variabele geen array of object is (en dus ook als die niet bestaat). Oftewel, met isset() kun je in een keer kijken of heel $bla[1][2]["aap"]["noot"] geldig is.
En deze opmerking:
Dit is wel zo want $_POST is een array en ISSET is voor variabelen
slaat natuurlijk ook nergens op. Alsof $_POST geen variabele is

. En op een bepaalde manier is $aap[3] óók een variabele, eentje met de naam '3' in de array waar $aap naar wijst.
[
Voor 44% gewijzigd door
.oisyn op 29-07-2008 15:01
]