2013-05-22 30 views
6

trên dòng sau tôi nhận được thông báo lỗi 'String bù đắp cast xảy ra'php 5.4 Chuỗi bù đắp cast xảy ra

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

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

Trên thực tế, việc tiếp cận mã một bảng. Nó hoạt động trong phiên bản trước nhưng không hoạt động ở phiên bản trước đó, nhưng không phải trong 5.4

Tôi là người mới và tôi chịu trách nhiệm chuyển đổi mã. Tôi nên thay đổi những gì để làm cho nó hoạt động. Tôi đọc rằng có lẽ vì biến này là một chuỗi thay vì một mảng. Tôi có thể làm gì sau đó?

+0

var_dump (giá trị $); bản in? – user4035

+1

Đây là lỗi trong phần mềm của bạn chưa bao giờ được phát hiện. Lưu ý rằng các offset có thể trong một chuỗi chỉ là các số nguyên – hek2mgl

+0

Trước tiên, bạn xử lý '$ value' làm mảng và sau đó bạn xử lý nó như là một mảng đa chiều. Ví dụ, nếu '$ value ['dictionaryText'] [$ codeLang]' là một điều .. thì "giá trị" của '$ value ['dictionaryAlias']' sẽ là "Array()", mà bạn đang cố gắng sử dụng làm chỉ mục cho '$ code'. –

Trả lời

12

Điều này có nghĩa là $value['dictionaryText'] là một chuỗi và $codeLang hoặc $langDefault không phải là số nguyên. Toán tử lập chỉ mục hoạt động trên các chuỗi, nhưng chỉ chấp nhận các chỉ số nguyên: khi nó nhận được một số khác, nó cố chuyển đổi nó thành một số nguyên, thường dẫn đến giá trị 0 và trả về ký tự tại chỉ mục đó.

Đây là cảnh báo mới mà họ đã giới thiệu trong 5.4 vì đó là lỗi thường xuyên và nguyên nhân thường gặp gây đau đầu.

+0

Cảm ơn bạn đã phản hồi. – klark

+0

mã là như sau – klark

Các vấn đề liên quan