urec-borec
@urec-borec
Любитель

Как вызвать одну функцию из ассоциативного массива?

Здравствуйте, есть ассоциативный массив, по типу такого:
$commands = ['hi' => hi(), 'hello' => hello(), 'etc' => etc(), ...];

Вопрос в том, как сделать чтобы например при обращение к ключу hi, выполнялась именно функция hi(), а не все функции которые есть в массиве и можно ли вообще так сделать?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Можно:
<?php
$commands = [
	'hi' => fn($name) => 'hi, ' . $name, 
	'hello' => fn($name) => 'hello , ' . $name,
	'etc' =>fn($name) => 'etc...',
];

echo $commands['hi']('John');


php code online
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Не очень понятно, что надо автору, но в общем случае это делается без проблем
$commands = ['hi' => 'hi', 'hello' => 'hello', 'etc' => 'etc'];
$commands['hi']();

Другое дело что изначальная задача сильно пованивает говнокодом
Особенно учитывая тот факт, что автор, похоже, не догадался, что у него функции вызываются не "при обращение к ключу hi", а ещё при создании массива
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы