Постоянное значение массива как индекс массива не работает в foreach

Я определяю поле класса как константу массива.
Затем я пытаюсь использовать значения полей этого массива в качестве индекса в другом массиве:

class A
{
const NAMES = Array(
"A",
);

static function run()
{
$arr = array("A"=>"123");


$arNames = constant('self::NAMES');

foreach ($arNames as $name) {
echo '$name=' . $name . '<BR>';
echo '$arr[$name]=' . $arr[$name] . '<BR>';
}

$name2=$arNames[0];
echo '<BR>'.'$name2=' . $name2 . '<BR>';
echo '$arr[$name2]=' . $arr[$name2] . '<BR>';
}
}

A::run();

На одном сервере под PHP 7.1.23 он работает нормально, и вывод:

$name=A
$arr[$name]=123

$name2=A
$arr[$name2]=123

Но он работает неправильно на другом сервере с тем же PHP, libs и так далее. Это устанавливает $ Обр [$ имя] к НОЛЬ в для каждого петля. Но прямой запрос по числовому индексу также работает нормально:

$name=A
$arr[$name]=

$name2=A
$arr[$name2]=123

Есть ли ограничения на использование константных массивов?
Я не нашел ничего на http://php.net/manual/ru/language.constants.syntax.php или еще.

прибавление
Теперь я выясняю разницу между серверами. Если опкод включен, блок цикла работает неправильно.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector