\Nette\ArrayHash offsetExists vraci false pro null hodnoty

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
esorimer
Člen | 114
+
0
-

Prestoze ArrayHash obsahuje nejakou polozku, pokud ma hodnotu NULL, tak metoda offsetExists vraci false.

Podle dokumentace offsetExists() „determines whether a item exists“. (kdyz uz tak „an item“)

Takze kdyz chci zjistit, jestli „an item exists“, musim iterovat pres cely ArrayHash a porovnavat klice :(

hAssassin
Člen | 293
+
0
-

myslim ze to funguje stejne jako funkce isset() ktera taky vraci false pokud prvek v poli existuje ale ma hodnotu NULL. Na to je funkce array_key_exists()

esorimer
Člen | 114
+
0
-

V tom případě je ale špatně dokumentace k té funkci. Mělo by tam být „Determine if a variable is set and is not NULL“.

Aurielle
Člen | 1281
+
0
-

Ona hlavně funkce offsetExists je implementací rozhraní \ArrayAccess, a neměla by být volána přímo. A protože na ArrayHash pak voláš něco jako isset($obj['key']), tak je logické, že výstup musí korespondovat s normálním chováním issetu.