Я пытаюсь обработать 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, но безрезультатно. Я признаю, что в своей неопытности я, скорее всего, упускаю что-то явно очевидное или не понимаю какой-то аспект массивов / обратных вызовов и т. Д., Но для моей жизни не могу этого понять.
Может кто-нибудь сказать мне, есть ли способ передать переменную в функцию в массиве и отображать / использовать возвращаемое значение?
Спасибо
как всплеск прокомментировал, использовать анонимная функция
<?php
$StartTagsArray = [
'product1' => function($attribute){ return $attribute * 2; }
];
$attr = 24;
$result = $StartTagsArray['product1']($attr);
echo($result);
Это печатает:
48
Других решений пока нет …