Cosa c'è di T_VARIABILE inaspettato in PHP?


Risposte:


193

Potrebbe esserci un punto e virgola o una parentesi che manca di una riga prima della riga incollata.

A me sembra a posto; ogni stringa è consentita come indice di array.


Oh, mi hai ricordato, è una parentesi mancata. Perché si chiama T_VARIABILE?
omg

2
Il messaggio di errore ti dice cosa c'è (inaspettato), non cosa manca. E c'è una variabile, quindi ti dice esattamente questo.
OregonGhost,

2
Perché l'imprevisto $listè una variabile.
Michael Krelin - hacker

2
perché php si aspettava una parentesi e ha trovato una variabile, ecco perché ti dice 'variabile inaspettata'
knittl

25

Potrebbe essere anche un'altra linea. PHP non è sempre così esatto.

Probabilmente ti manca solo un punto e virgola sulla riga precedente.

Come riprodurre questo errore, inseriscilo in un file chiamato a.php:

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

Eseguirlo:

eric@dev ~ $ php a.php

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

Spiegazione:

Il parser PHP converte il tuo programma in una serie di token. A T_VARIABLEè un token di tipo VARIABILE. Quando il parser elabora i token, cerca di dar loro un senso e genera errori se riceve una variabile in cui nessuno è consentito.

Nel semplice caso sopra con variabile $b, il parser ha provato a elaborare questo:

$a = 5 $b = 7;

Il parser PHP guarda la $ b dopo il 5 e dice "che è inaspettato".


2

Nel mio caso si trattava di un problema della versione PHP.

Il file .phar che stavo usando non era compatibile con PHP 5.3.9. Il passaggio dell'interprete a PHP 7 ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.