2013-08-16 2 views
1

Следующий код дает мне ошибки при запуске на окнах с PHP версии 5.3.5:Синтаксическая ошибка в Windows, а не Linux

$dir_widgets = '/var/www/site-sp/dir1/filename.json'; 

ошибки здесь:

$folder_name = array_reverse(explode('/' , $dir_widgets))[ 1 ]; 

Это ошибка :

*Parse error*: syntax error, unexpected '[' in 

В GNU/Ubuntu 13.04 с PHP версии 5.4.9 он отлично работает.

Может быть версия PHP? Неправильно ли это делать следующее?

array_reverse(explode('/' , $dir_widgets))[ 1 ] 

Спасибо.

+3

** Расскажите нам, что ошибка это дает **, а также, почему бы вам не использовать [* * 'json_decode' **] (http://php.net/manual/en/function.json-decode.php) и прочитать объект? Имейте в виду, что в Windows '/ var/www/site-sp/dir1/filename.json' не допустимый путь к каталогу. – Prix

+0

Точно ли путь к каталогу? Этот путь к каталогу типичен для Linux-установки PHP, а не для Windows. –

+0

Windows использует совершенно другую структуру каталогов, поэтому '/ var/www/site-sp/dir1/filename.json' не имеет никакого смысла на машине Windows, это должно быть что-то вроде' c: \\ blah \\ www \ \ site-sp \\ dir1 \\ filename.json' – chiliNUT

ответ

7

Доступ к индексу массива непосредственно из возвращаемого значения был добавлен в PHP 5.4, поэтому вы получаете синтаксическую ошибку с версией 5.3. Вам нужно сохранить возвращаемое значение из функции во временную переменную, а затем получить доступ к нужному индексу.

Что-то вроде:

$tmp_array = array_reverse(explode('/' , $dir_widgets)); 
$tmp_array[1] ... 
1

PHP 5.3 не позволит вам ссылаться на значение в массиве, как вы пытаетесь сделать.

Вы должны установить возвращение из array_reverse() к переменной и ссылки элемента из этой переменной а-ля $var = array_reverse(); $var[1];

Смежные вопросы