Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Анонимные функции


Автор: Smorodin 11.12.2013, 18:21
Код

$a = array(
    'func1' => function($data) {
            var_dump($data);
        },
    'func2' => function($data) {
            var_dump($data);
        }
);

$f = function($data)
{
    var_dump('function');
};

$f(44441);


Что должно вывести?

На WAMP (PHP 5.4.12) выводится "function".
На CentOS (PHP 5.4.22) выводится... "44441".

Я дурак? Как так?

Добавлено через 2 минуты и 47 секунд
Если закомментировать массив, то везде выводится "function"

Автор: krypt3r 12.12.2013, 06:53
Вы к массиву $a не обращаетесь. Уверены, что тестируете один и тот же код? И (рас)комментирование тут никак не должно влиять.

Автор: Smorodin 12.12.2013, 09:40
Уверен, что один и тот же код. Я и говорю, что php неадекватно себя ведет... =(

Автор: baldina 12.12.2013, 11:29
Цитата(Smorodin @  11.12.2013,  18:21 Найти цитируемый пост)
На CentOS (PHP 5.4.22) выводится... "44441".

сами себя путаете. проверьте, там наверняка
Код

$f = function($data)
{
    var_dump($data);
};


Автор: Smorodin 12.12.2013, 17:53
Нет. Код один и тот же там и там, я проверял. Я никого не путаю, себя тем более. Пошел переустанавливать, другого решения не вижу...

Добавлено через 7 минут
Разобрался. Вдруг поможет кому - проблема была с эти: eaccelerator.optimizer. Нужно значение выставить в "0".

Автор: baldina 12.12.2013, 18:29
чудеса однако

Автор: Smorodin 12.12.2013, 18:57
C eaccelerator если без патча, то, особенно с версией php 5.3, оптимизацию надо обязательно выключить. Инача анонимные функции работают коряво.
Век живи - век учись))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)