Mam dziwny problem z funkcją isset() w PHP. Pozwól mi pokazać ....php isset() na zmiennej łańcuchowej używającej ciągu jako indeksu
<?php
$aTestArray = array(
'index' => array(
'index' => 'Główna'
),
'dodaj' => 'Dodaj ogłoszenie',
);
var_dump(isset($aTestArray['index']));
var_dump(isset($aTestArray['index']['index']));
var_dump(isset($aTestArray['dodaj']));
var_dump(isset($aTestArray['index']['none']));
var_dump(isset($aTestArray['index']['none']['none2']));
// This unexpectedly returns TRUE
var_dump(isset($aTestArray['dodaj']['none']));
var_dump(isset($aTestArray['dodaj']['none']['none2']));
?>
var_dump powróci:
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
Dlaczego szósty var_dump() zwraca TRUE?
Niepoprawnie. Jedną z najlepszych cech PHP jest to, że _daje_ dopuszcza klucze łańcuchowe; '['none']' jest poprawną nazwą klucza. – Bojangles
+1 Dobrze wyjaśnić, że użycie '[]' na łańcuchu próbuje uzyskać dostęp do jego znaków jako komponentów tablicy. –
@JamWaffles Absolutnie! Ale właśnie wtedy pracujemy z tablicami asocjacyjnymi. W tym przypadku robimy coś w rodzaju 'Dodaj ogłoszenie '[' none ']', które nie obsługuje nazwanych kluczy. –