Использование функции в качестве значения массива, которое возвращает результат

Я пытаюсь обработать XML-файл, используя функцию в качестве значения массива, которая возвращает результат, например:

$StartTagsArray = [
'product1' => getValue($attribute){ return $result = $attribute * 2; },
];

$attr = $xml->getAttribute('w:val');
$result = $StartTagsArray[$xml->name];
echo($result);

К сожалению, я борюсь с этим, испытываю различные ошибки, но ни в коем случае я не могу получить доступ и отобразить возвращенное значение. Я пробовал $ attr как глобальный в функции. Я пытался использовать массив GLOBALS, передавая $ attr в качестве ссылки с функцией, &$ Атр. Использование «call_user_func ()» и использование различных замыканий, таких как: —

‘product1' => getValue($attr, function() use( &$var)){ return $var * 2;    }

На самом деле я прочитал и перепробовал множество возможных решений из-за переполнения стека и из php.net, но безрезультатно. Я признаю, что в своей неопытности я, скорее всего, упускаю что-то явно очевидное или не понимаю какой-то аспект массивов / обратных вызовов и т. Д., Но для моей жизни не могу этого понять.

Может кто-нибудь сказать мне, есть ли способ передать переменную в функцию в массиве и отображать / использовать возвращаемое значение?

Спасибо

2

Решение

как всплеск прокомментировал, использовать анонимная функция

<?php
$StartTagsArray = [
'product1' => function($attribute){ return $attribute * 2; }
];

$attr = 24;

$result = $StartTagsArray['product1']($attr);

echo($result);

Это печатает:

48

1

Другие решения

Других решений пока нет …