Bnetworkinglle ricce PHP nella notazione arrays

Mi piacerebbe solo imbattersi in un pochino di codice php:

$oink{'pig'} = 1; var_dump($oink); $oink{'pig'} = '123123'; echo $oink{'pig'}; /* => 123123 */ echo $oink['pig']; /* => 123123 */ 

Funziona come un arrays, ma da nessuna parte menzionato nel manuale. Cos'è questo?

È menzionato nel manuale. {} è solo una syntax alternativa a [] § :

Sia le parentesi quadre che le parentesi graffe possono essere utilizzate in modo intercambiabile per accedere agli elementi dell'arrays (ad es. $arrays[42] e $arrays{42} faranno entrambe la stessa cosa nell'esempio sopra).

Lo stesso vale per le stringhe § :

È ansible accedere ai caratteri all'interno delle stringhe e modificarli specificando l'offset a base zero del carattere desiderato dopo la string usando parentesi quadre, come in $str[42] . Pensa a una string come a una matrix di caratteri per questo scopo. […]

Nota: è ansible accedere alle stringhe anche utilizzando le parentesi, come in $str{42} , per lo stesso scopo .

Secondo questo commento sulla documentazione, è solo un'altra notazione, probabilmente progettata per assomigliare alla syntax Perl: http://www.php.net/manual/de/language.types.arrays.php#99015

Aggiornamento: quando questa risposta è stata originariamente pubblicata, il manuale PHP non ha avuto alcuna informazione ufficiale su questa notazione. Entro il 2014, tuttavia, il commento di cui sopra era stato rimosso e, come dice la risposta di Pacerier , la notazione è stata menzionata ufficialmente nel manuale.

È menzionato nel manuale, ma è oscuro:

http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

In breve, le parentesi graffe accedono solo a un singolo carattere (prova ad aggiungere una string completa e vedrai che restituisce solo il primo carattere). È anche deprecato, quindi eviterei il suo uso.