Как подставить $i в название функции в цикле?
Нужно запустить много функций в цикле, у которых только цифры в названии отличаются
Существует функция:
func1_1() {
//something code here
}
А надо сделать какое-то кол-во таких ф-ий: func1_2(), func1_3()....func2_1(), func2_2()...
В стремлении укоротить код пытаюсь сделать это с помощью цикла:
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
func'.($i+1).'_'.($j+1).'()' {//тут проблемы с синтаксисом, вот этот момент и интересует
//something code here
}
}
}
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
В качестве бреда к бреду:
$functionsHolder = [];
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
$functionsHolder["func{$i}_{$j}"] = function() use ($i, $j) {
echo "Это функция {$i}_{$j}";
};
}
}
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
$functionsHolder["func{$i}_{$j}"]();
echo "\n";
}
}
// Или так
// array_walk_recursive($functionsHolder, function($function) {
// $function();
// echo "\n";
//});
// Output:
Это функция 1_1
Это функция 1_2
Это функция 1_3
Это функция 2_1
Это функция 2_2
Это функция 2_3
Это функция 3_1
Это функция 3_2
Это функция 3_3