2017-10-09 18 views
6

tôi đang cố gắng để thực thi mã này (nó đã được làm việc trên php5, bây giờ I'am trên php7):mảng để chuyển đổi chuỗi trong Php7

$this->links->$data[$te]['attributes']['ID'] = $data[$te]['attributes']['URL']; 

Nhưng tôi nhận được lỗi này:

ContextErrorException: Notice: Array to string conversion

Cảm ơn trước

+0

Rõ ràng có một cấp độ khác bên dưới '$ dữ liệu [$ te] ['thuộc tính'] ['URL']' có chứa giá trị thực tế và '$ dữ liệu [$ te] ['thuộc tính'] ['URL'] 'là một mảng – RiggsFolly

+1

giá trị của' $ te' là gì? – mega6382

+0

sử dụng var_dump ($ data [$ te] ['attributes'] ['URL']); và kiểm tra những gì trong đó plz –

Trả lời

7

Điều này là do thay đổi về cách biến phức tạp được giải quyết trong PHP 5 so với 7. Xem phần trên Thay đổi để xử lý biến tại đây: http://php.net/manual/en/migration70.incompatible.php

Sự khác biệt là sự biểu hiện:

$this->links->$data[$te]['attributes']['ID'] 

được đánh giá như thế này trong PHP 5:

$this->links->{$data[$te]['attributes']['ID']} 

và như thế này trong PHP 7:

($this->links->$data)[$te]['attributes']['ID'] 

Xem https://3v4l.org/gB0rQ cho một ví dụ cắt xuống.

Bạn cần sửa đổi mã của mình để rõ ràng, bằng cách sử dụng {} nếu thích hợp hoặc bằng cách chia nhỏ thành hai dòng. Trong trường hợp này, nơi bạn đã có mã hoạt động tốt trong PHP 5, hãy chọn mã nguồn cũ, vì nó có nghĩa là hành vi vẫn nhất quán trong tất cả các phiên bản của PHP.

+0

Xin chào, Cảm ơn bạn đã trả lời, nhưng tiếc là nó không hoạt động: Lỗi phân tích cú pháp: lỗi cú pháp, không mong muốn '}' – CrazyDeveloper

+0

Bạn có thể dán nội dung bạn đã thay đổi không? Bạn có thể muốn sử dụng khối mã thứ hai trong câu trả lời (tức là thay đổi nó để làm việc một cách rõ ràng cách PHP 5) – iainn

+1

Sự cố được giải quyết bằng cách gói $ data bên trong {$ data [$ te] ['attributes'] ['ID']} , như được đề xuất cho Php5. Mã được đề xuất cho PHP7 không hoạt động. thanks – CrazyDeveloper

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