Parse error: syntax error, unexpected ‚[‚ in

Dnes už se s touto chybou na webech moc nesetkáte. Pokud však vaši zákazníci mají weby na webhostingu se starší verzí PHP 5.4 a nižší tak je to možné.

Jak chyba přesně vypadá #

Parse error: syntax error, unexpected ‚[‚ in /www/domena.tld/wordpress/wp-content/themes/sablona/functions/funkce.php on line 1234

Tato chyba nám oznamuje, že došlo k syntaktické chybě při parsování. Konkrétně parser narazil na znak [ v místě, kde by jej nečekal.

Verze PHP 5.3 a starší #

Tuto chybu způsobuje použití funkce pro práci s polem (array). Konkrétně array().

Do verze PHP 5.3 byl pouze možný zápis:

$pole = array(1, 2, 3);

Od verze PHP 5.4 se však hojně začal používat i zápis:

$pole = [1, 2, 3];

Vzhledem k tomu, že PHP 5.3 tento zápis nezná, tak vyhodí chybu.

Obdobně jakákoliv funkce, která bude využívat [ ] pro volání klíče vyhodí chybu. Například:

$pole = funkce()["klíč"];

Řešení v tomto případě je tedy přejít na novou verzi PHP.

Ostatní běžné chyby zápisu [ #

Pokud se nepotvrdí problém s verzí PHP, je klidně možné že se skriptu opravdu nachází chybně použité [ ].

Například není možné jen tak definovat pole při zadávání proměnné v třídě.

<?php
class Trida{
  public $promena["klic"] = 1;
}
?>

Tohle způsobí chybu. Od verze PHP 5.6.3 však jde použít zápis:

class Trida{
    public $promena = [
        'klic' => 1
    ];
}

Jinak se chyba nejčastěji vyskytuje, když omylem programátor použije běžné závorky ( ) místo [ ].

Zdroje: