2013-05-22 11 views
6

sulle seguenti linee ottengo l'errore 'compensato String getto si è verificato'php 5.4 String getto di offset è verificato

$code[$value['dictionaryAlias']] = $value['dictionaryText'][$codeLang]; 

$code[$value['dictionaryAlias']] = $value['dictionaryText'][$langDefault]; 

In realtà, il codice di accesso di un tavolo. Funziona nella versione precedente ma non in 5.4

Sono un novizio e sono responsabile della conversione del codice. Quali cambiamenti dovrei apportare per farlo funzionare. Ho letto che probabilmente è perché la variabile è una stringa anziché una matrice. Cosa posso fare allora?

+0

Cosa var_dump ($ valore); stampe? – user4035

+1

Questo è un bug nel tuo software che non è mai stato rilevato. Si noti che gli offset possibili in una stringa sono solo interi – hek2mgl

+0

Prima si considera '$ valore' come una matrice e quindi la si considera come una matrice multidimensionale. Ad esempio, se '$ value ['dictionaryText'] [$ codeLang]' è una cosa .. allora il "valore" di '$ value ['dictionaryAlias']' sarebbe "Array()", che stai provando a usa come indice per '$ code'. –

risposta

12

Ciò significa che $value['dictionaryText'] è una stringa e che $codeLang o $langDefault non è un numero intero. L'operatore di indicizzazione lavora su stringhe, ma accetta solo indici interi: quando riceve qualcos'altro, prova a convertirlo in un numero intero, il più delle volte risultante nel valore 0, e restituisce il carattere in quell'indice.

Questo è un nuovo avviso che hanno introdotto in 5.4 perché era un errore frequente e una causa frequente di mal di testa.

+0

Grazie per la tua risposta. – klark

+0

il codice è il seguente – klark

Problemi correlati