Negli array PHP, la chiave numeriche s'impone su quella stringa, nel senso che, se definisci un array come
Codice PHP:
$arr=array("0"=>"Hello","1"=>"world","3"=>"!");
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 interpreta
Codice 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).
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