2015-01-29 4 views
1

У меня есть эта PHP функция:Ошибка анализа: синтаксическая ошибка, неожиданная '[' in in PHP?

function soheiladder($old_h,$old_m,$new_m) 
{ 
    $old_total_m = ($old_h * 60) + $old_m ; 
    $new_total_m = $old_total_m + $new_m ; 

    $output_h = intval($new_total_m/60); 
    $output_m = ($new_total_m % 60); 
    $output =array(); 
    $output[0] = $output_h; // saat 
    $output[1] = $output_m; // minute 
    return $output; 

} 

, когда я хочу использовать его выход таким образом:

echo soheiladder($pele_h ,$pele_m,$ajib) [0] ; 
echo soheiladder($pele_h ,$pele_m,$ajib) [1] ; 

Он хорошо работает в WAMP сервер, но когда я проверить его в Интернете PHP говорит:

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

для каждого выхода! Что мне делать?

+1

Разрушение разводов в рамках 5.4 не работает! – Rizier123

+0

@ Rizier123 - Не говоря уже о том, что в этом конкретном случае это неэффективно. В итоге вам приходится дважды использовать функцию «soheiladder», потому что вы никогда не сохраняли результаты. –

+0

Почему вы разрабатываете другую версию PHP для версии, которую собираетесь использовать на своих производственных серверах? Это 2015 год. С легкостью создания виртуальных ящиков нет необходимости иметь разные стеки для разработки и производства. –

ответ

4

Потому что этот синтаксис (а именно Function Array Dereferencing) не поддерживается в каждой версии PHP.
Это было implented, поскольку PHP 5.4

Вы можете прочитать RFC здесь: https://wiki.php.net/rfc/functionarraydereferencing

Самое смешное, что в 2009 году он был первым declied и, наконец, переодобрена и добавил несколько лет спустя.

Имейте в виду, что данный ваш фрагмент кода, вы должны кэшировать результат:

$cached = soheiladder($pele_h ,$pele_m,$ajib); 
echo $cached[0], $cached[1]; 
+0

tnx вот и все! :) – SoheilYou

1

Ваша версия PHP явно меньше, чем 5,4, как он поддерживает функцию массива dereferncing поэтому сначала обновить PHP

Альтернативно магазин выход в переменную, а затем получить соответствующий ключ