Ho questo codice:Perché le stringhe si comportano come un array in PHP 5.3?
$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host;
Sta funzionando benissimo in PHP 5.5, ma in PHP 5.3 la condizione restituisce true, mentre $host
contiene una stringa come pjba01
. Restituisce la prima lettera di $tierHosts['host']
, ovvero p
.
Cosa c'è di così sbagliato nel mio codice?
È possibile ignorare questo comportamento con '(is_array ($ host) && isset ($ host [" nome "]))'. Controlla sempre il tipo di cui hai bisogno se non è chiaro quale tipo hai ricevuto. Per maggiori dettagli sul comportamento che hai descritto vedi la risposta di Rizier123s. – TobiasJ
Se sei interessato ad alcune delle altre cose che possono sorprendervi in PHP, leggi questo. http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/ – Almo
Perché le stringhe si comportano come un array ...? Perché sono un array ... – SnakeDoc