Negli array PHP, la chiave numeriche s'impone su quella stringa, nel senso che, se definisci un array come
PHP non cosidera le chiavi come stringa ma le memorizza come numeri interi. Ciò è vero fin tanto che la conversione in int non causa perdita d'informazione. Quindi PHP interpretaCodice PHP:$arr=array("0"=>"Hello","1"=>"world","3"=>"!");
Questo significa che il tuo array ha chiavi miste: una parte sono stringhe (le lettere) ed una parte interi (le cifre).Codice PHP:$arr=array(0=>"Hello",1=>"world",3=>"!");
Nel momento in cui confronti una stringa con un intero, PHP converete automaticamente la stringa in intero ed effettua il confronto fra i due.
Conseguenza di ciò è che quando hai $dispx che vale "c" e $chiave che vale "c" visualizzi il 5 ossia $dispx['c'][0].
Ma visualizzi anche $dispx['0'][0] che vale 1 perchè $chiave non è la stringa "0", come pensi tu, ma è l'intero 0 per quanto detto prima sugli array. Dato che 'c' convertito in int da PHP vale 0, si ha $dispx==$chiave equivalente a 0==0 che è true. Ecco perchè visualizzi anche la cifra 1
![]()

Rispondi quotando