T_VARIABLE ที่ไม่คาดคิดใน PHP คืออะไร?


87

ฉันได้รับข้อผิดพลาด PHP นี้:

ข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์ T_VARIABLE ที่ไม่คาดคิด

จากบรรทัดนี้:

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

บรรทัดนี้มีอะไรผิดปกติหรือไม่?


1
X-Ref: PHP Parse / Syntax Errors; และจะแก้อย่างไร? - T_VARIABLE ที่ไม่คาดคิดสำหรับสาเหตุทั่วไปอื่น ๆ และการแก้ไขเฉพาะบริบท
มาริโอ

คำตอบ:


193

อาจมีอัฒภาคหรือวงเล็บขาดบรรทัดก่อนบรรทัดที่คุณวาง

ดูเหมือนจะดีสำหรับฉัน ทุกสตริงได้รับอนุญาตให้เป็นดัชนีอาร์เรย์


คุณเตือนฉันแล้วมันพลาดวงเล็บทำไมถึงเรียกว่า T_VARIABLE
omg

2
ข้อความแสดงข้อผิดพลาดจะบอกคุณว่ามีอะไร (ไม่คาดคิด) ไม่ใช่สิ่งที่ขาดหายไป และมีตัวแปรมันบอกคุณอย่างนั้น
OregonGhost

2
เพราะสิ่งที่ไม่คาดคิด$listเป็นตัวแปร
Michael Krelin - แฮ็กเกอร์

2
เนื่องจาก php คาดหวังวงเล็บและพบตัวแปรนั่นคือสาเหตุที่บอกคุณว่า 'ตัวแปรที่ไม่คาดคิด'
knittl

25

อาจเป็นแนวอื่นก็ได้เช่นกัน PHP ไม่แน่นอนเสมอไป

อาจเป็นไปได้ว่าคุณไม่มีเครื่องหมายอัฒภาคในบรรทัดก่อนหน้า

วิธีทำให้เกิดข้อผิดพลาดนี้อีกครั้งใส่สิ่งนี้ในไฟล์ที่เรียกว่าa.php:

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

เรียกใช้:

eric@dev ~ $ php a.php

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

คำอธิบาย:

ตัวแยกวิเคราะห์ PHP แปลงโปรแกรมของคุณเป็นชุดโทเค็น A T_VARIABLEคือ Token ประเภท VARIABLE เมื่อตัวแยกวิเคราะห์ประมวลผลโทเค็นมันจะพยายามทำความเข้าใจและแสดงข้อผิดพลาดหากได้รับตัวแปรที่ไม่ได้รับอนุญาต

ในกรณีง่าย ๆ ด้านบนที่มีตัวแปร$bตัวแยกวิเคราะห์พยายามประมวลผลสิ่งนี้:

$a = 5 $b = 7;

ตัวแยกวิเคราะห์ PHP จะดูที่ $ b หลัง 5 และพูดว่า "นั่นคือสิ่งที่ไม่คาดคิด"


2

ในกรณีของฉันมันเป็นปัญหาของเวอร์ชัน PHP

ไฟล์. phar ที่ฉันใช้ไม่เข้ากันได้กับ PHP 5.3.9 การเปลี่ยนล่ามเป็น PHP 7 ช่วยแก้ไขได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.