T_VARIABLE không mong muốn trong PHP là gì?


86

Tôi gặp lỗi PHP này:

Lỗi phân tích cú pháp: lỗi cú pháp, T_VARIABLE không mong muốn

Từ dòng này:

$list[$i][$docinfo['attrs']['@groupby']] = $docinfo['attrs']['@count'];

Có gì sai với dòng này?


1
X-Ref: Lỗi phân tích cú pháp / cú pháp PHP; và Làm thế nào để giải quyết chúng? - T_VARIABLE không mong đợi cho các nguyên nhân phổ biến khác và các bản sửa lỗi theo ngữ cảnh cụ thể.
mario

Câu trả lời:


189

Có thể có dấu chấm phẩy hoặc dấu ngoặc vuông thiếu một dòng trước dòng đã dán của bạn.

Nó có vẻ ổn đối với tôi; mọi chuỗi đều được phép làm chỉ số mảng.


Ồ, bạn đã nhắc tôi, nó bị thiếu một dấu ngoặc vuông. Tại sao nó được gọi là T_VARIABLE?
omg 23/09/09

2
Thông báo lỗi cho bạn biết những gì ở đó (không mong đợi), không phải những gì bị thiếu. Và có một biến, vì vậy nó cho bạn biết chính xác điều đó.
OregonGhost

2
Bởi vì bất ngờ $listlà một biến số.
Michael Krelin - hacker 23/09/09

2
vì php đã mong đợi một khung và tìm thấy một biến, đó là lý do tại sao nó sẽ cho bạn biết 'biến bất ngờ'
knittl

24

Nó cũng có thể là một số dòng khác. PHP không phải lúc nào cũng chính xác như vậy.

Có lẽ bạn chỉ thiếu dấu chấm phẩy ở dòng trước.

Làm thế nào để tạo lại lỗi này, hãy đặt nó vào một tệp có tên a.php:

<?php
  $a = 5
  $b = 7;        // Error happens here.
  print $b;
?>

Chạy nó:

eric@dev ~ $ php a.php

PHP Parse error:  syntax error, unexpected T_VARIABLE in
/home/el/code/a.php on line 3

Giải trình:

Trình phân tích cú pháp PHP chuyển đổi chương trình của bạn thành một loạt các mã thông báo. A T_VARIABLElà một Mã thông báo kiểu VARIABLE. Khi trình phân tích cú pháp xử lý các mã thông báo, nó sẽ cố gắng hiểu chúng và ném lỗi nếu nó nhận được một biến không được phép.

Trong trường hợp đơn giản ở trên với biến $b, trình phân tích cú pháp đã cố gắng xử lý điều này:

$a = 5 $b = 7;

Trình phân tích cú pháp PHP nhìn vào $ b sau 5 và nói "điều đó thật bất ngờ".


2

Trong trường hợp của tôi, đó là sự cố của phiên bản PHP.

Tệp .phar tôi đang sử dụng không tương thích với PHP 5.3.9. Việc chuyển trình thông dịch sang PHP 7 đã khắc phục được sự cố.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.