
Попадаются нетривиальные задачи, например необходима функция которая в зависимости от полученной переменной в качестве аргумента , должна выполнить определенные действия. Т.е. необходимо определить не значение а имя переменной средствами php.
Решение есть.
Понадобиться функция
function vname(
&$var,
$scope=false,
$prefix=’unique’,
$suffix=’value’
){
if($scope) $vals = $scope;
else $vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach($vals as $key => $val) {
if($val === $new) $vname = $key;
}
$var = $old;
return $vname;
}
Как использовать?
1. Используем для определения имени переменной в глобальной зоне видимости:
<?php
$my_global_variable = «My global string.»;
echo vname($my_global_variable);
// вернет: my_global_variable
?>
2. Определяем имя перeменной локальной:
<?php
function my_local_func()
{
$my_local_variable = «My local string.»;
return vname($my_local_variable, get_defined_vars());
}
echo my_local_func();
// вернет: my_local_variable
?>
3. Определяем имя свойства объекта:
<?php
class myclass
{
public function __constructor()
{
$this->my_object_property = «My object property string.»;
}
}
$obj = new myclass;
echo vname($obj->my_object_property, $obj);
// вернет: my_object_property
?>
Тэги: php, узнать имя переменной
Спасибо огромное, как раз то что искал! Очень полезный сайт у вас.