2014-05-09 20 views
9

E 'possibile che questa riga di codice PHPPHP 5.3.10 vs PHP 5.5.3 Errore di sintassi imprevisto '['

if ($this->greatestId()["num_rows"] > 0) 

opere in PHP 5.5 e restituisce un errore in 5.3 ??

PHP Parse error: syntax error, unexpected '[' in /var/www/app/AppDAO.php on line 43 

Come posso modificarlo per funzionare in PHP 5.3?

risposta

2

Non è possibile utilizzare in questo modo if ($this->greatestId()["num_rows"] > 0) in PHP 5.3 ver utilizzare sotto il codice.

$var = $this->greatestId(); 
if ($var["num_rows"] > 0){ 
    // your code 
} 
15

Array dereferencing diventato disponibile in PHP 5.4 Ecco perché questo non funziona in PHP 5.3. In modo da avere un passo in più in cui è necessario ottenere il valore di matrice dalla chiamata di funzione e quindi si può utilizzare:

$variable = $this->greatestId(); 
if ($variable["num_rows"] > 0){ 
     // do stuff 
} 
+1

ha trovato il collegamento: https://php.net/manual/en/migration54.new-features.php all'interno di nuove funzionalità che dicono: È stato aggiunto il dereferenziazione dell'array funzione, ad es. foo() [0]. – dendini

+0

Ho riscontrato questo errore ieri, sul mio ambiente locale ho php5.5 e sul test 5.3:/grazie per la risposta. –

1

Come accennato nel PHP 5.4 note:

Dal PHP 5.4 è possibile schierare in dereferenziazione il risultato di una funzione o di un metodo direttamente. Prima era possibile solo utilizzando una variabile temporanea .

Non è possibile farlo in PHP 5.3, è necessario utilizzare una variabile.