2015-03-02 6 views
1

Эта строка кода работает отлично, прежде чем я модернизировал, теперь он не делает:Не удается передать переменную переменную в функцию в PHP с момента обновления с 5.5.22 до 5.6.6?

123: $thisRow[] = displayR(${"sR{$i}S1"}, ${"nR{$i}S1P"}); 

Я получаю эту ошибку:

Undefined variable: sR1S1 in script.php on line 123 

Обойти это вручную назначить им первый

$s = ${"sR{$i}S1"}; 
$n = ${"nR{$i}S1P"}; 
$thisRow[] = displayR($s, $n); 

Есть ли способ заставить его работать в одной строке, как и раньше? Кто-нибудь знает, почему он больше не работает?

Я должен добавить, что я попытался использовать

var_dump(${"sR{$i}S1"});
в предыдущей строке, и он определен и имеет значение, которое я ожидаю.

Я не могу найти упоминания об этом поведении в google или SO, интересно, является ли это скорее ошибкой, чем предполагаемой.

+1

Ясно затягивая на неаккуратных практики кодирования является ошибка : если переменная не определена, когда вы передаете ее функции, что должна делать эта функция? –

+0

[уведомление об изменении неопределенности php и неопределенное уведомление об индексе] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) –

+0

Переменные ARE определены @Mark. Я могу var_dump их в предыдущей строке, и они там, как inteded. var_dump ($ {"sR {$ i} S1"}) выводит значение, как ожидалось. – Codemonkey

ответ

0

Я считаю, что это ошибка в opcache.

Отказ от opcache на файл, о котором идет речь, возобновил ожидаемое поведение.

я представил (довольно бесполезный) сообщение об ошибке по адресу:

https://bugs.php.net/bug.php?id=69159

Который по-видимому, был зафиксирован и закрыт:

http://git.php.net/?p=php-src.git;a=commitdiff;h=a29b64fc1029b4121e3e9ff20901c35ad600b4da

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

  • Нет связанных вопросов^_^