Многие не используют третий аргумент array_walk — а зря.
$discounts = ['vip' => 0.3, 'regular' => 0.1];
$prices = ['vip' => 1000, 'regular' => 500];
array_walk($prices, function (&$price, $key, $discounts) {
$price -= $price * ($discounts[$key] ?? 0);
}, $discounts);
// ['vip' => 700, 'regular' => 450]
Третий аргумент — проброс внешних данных прямо в коллбэк. Не нужен use, не нужна глобальная переменная.
Читается чище, зависимости явные и сразу видно, что коллбэк работает с $discounts.
🐸 Библиотека пхпшника
#vardump