Заранее прошу прощения если вопрос кому-то покажется глупым и бессмысленным, но для меня он имеет смысл. Необходима функция которая на входе получает например $var а на выходе выдаёт строку 'var' т.е. имя поданной переменной в строковом виде. Есть какие-то способы это сделать?
Выход только такой:
echo substr('$var',1);
То есть, если не передать переменную в одинарных кавычках, то есть в простой строке, то ничего не выйдет. В двойных кавычках переменная выполнится и вернет значение.
function variable($var) {
return substr($var, 1);
}
$var1 = '$var';
echo variable($var1); // var
Только вот не знаю к чему это может быть пригодно.
Еще можно попробовать функцию get_defined_vars
но она выплевывает все.
UPD:
function variable($variable, array $vars) {
$variable = substr($variable, 1);
$vars = isset($vars[$variable]) ? $vars[$variable] : 'null';
return $variable . ' = '. $vars;
}
echo variable('$var', get_defined_vars()); // var = 666
За исключением того, что get_defined_vars
работает только с той областью видимости, где была определена - означает, что если определим в функции, то не увидит переменную за областью видимости функции.
Смог бы увидеть $GLOBALS
, но registr_globals
был удален в 5.4, теперь не видит.
Можем получить стек вызовов, вычитать строку из кода, получить переменную.
Способ явно медленный с кучей ограничений, но как пример..
function getVariableName($variable)
{
$backtrace = debug_backtrace()[0];
$file = file($backtrace['file']);
$callLine = $file[$backtrace['line']-1];
$result = preg_match('/' . __FUNCTION__ . ' *\([^$]*(?P<varName>\$[^ ,)]+) *\)/ui', $callLine, $matches);
if (!$result) {
throw new Exception('Fix regexp');
}
return $matches['varName'];
}
$foo = 'bar';
$baz = ['Hello', 'World'];
echo getVariableName($foo);
echo PHP_EOL;
echo getVariableName($baz);
// $foo
// $baz
По мотивам ответа на en.SO
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Это bodyphp Для вывода всех строчек с масива отвечает функция getPosts, она же и задает в ссылке id
Пожалуйста подскажите, что означает ошибка:
Доброго времени сутокРаботаю с VK API, имеется JSON строка с которой мне нужно вытащить кое какие значения