Я создал функцию под названием multiply (), которая принимает массив чисел, умножает каждое значение на число и возвращает массив:
<?php
function multiply($arr, $factor)
{
$newArr = array_map(function ($number) {
return $number * $factor; // line 5
}, $arr);
return $newArr;
}
$array = [2,4,6];
$factor = 2;
$result = multiply($array, $factor);
print_r($result);
?>
Выход:
Undefined variable: factor .... on line 5
Я не понимаю, почему $factor в моем случае не определен?
пожалуйста, проверьте php.net/manual/en/functions.anonymous.php, чтобы узнать больше об этом






Функция, используемая в array_map, имеет другую область видимости и не может видеть переменные вне ее. Вам нужно использовать ключевое слово use и передать $ factor в качестве дополнительного аргумента, чтобы он был доступен:
$newArr = array_map(function ($number) use ($factor) {
return $number * $factor;
}, $arr);
Я добавляю в свой код слово «использование», но там написано «синтаксическая ошибка. Неожиданное использование ...»
Попробуйте использовать (&factor)
Анонимная функция, используемая в вашем
array_map(), имеет свою собственную область действия, а$factorнедоступен в области действия вашей анонимной функции.