2012-06-19 2 views
0

Можно создать дубликат:
How to get a variable name as a string in PHP?Может ли переменная PHP знать свое имя?

Пример:

Может что-то вроде этого можно достичь в PHP?

$Age = 43; 

output_variable_name_and_value($Age); 

    /* 
    outputs: 
    "The requested variable name is Age and its current value is 43"; 
    */ 


//If possible, how would the line marked below with ? ? ? ? be? 

function output__variable_name_and_value($input) 

{ 

    $var_name = get_name_somehow($input); // ? ? ? ? 

    echo "The requested variable name is {$var_name} 
      and its current value is {$input}"; 

} 
+0

Пожалуйста, убедитесь, что код работает – PeeHaa

+2

Из принятого ответа на дублирующий вопрос: «Чтобы быть понятным, в PHP нет хорошего способа сделать это, что, вероятно, потому, что вам не нужно это делать. вероятно, лучшие способы делать то, что вы пытаетесь сделать ». – lonesomeday

ответ

1

Это не представляется возможным, легко. Вы должны использовать $ GLOBALS;

function get_variable_name($var) { 
    foreach($GLOBALS as $k => $v) { 
     if ($v === $var) { 
      return $k; 
     } 
    } 
    return false; 
} 

Единственное падение состоит в том, что оно может возвращать другое имя переменной, если оба они имеют одинаковое значение.

Или это,

function varName($v) { 
    $trace = debug_backtrace(); 
    $vLine = file(__FILE__); 
    $fLine = $vLine[ $trace[0]['line'] - 1 ]; 
    preg_match("#\\$(\w+)#", $fLine, $match); 
    print_r($match); 
} 

, который я нашел здесь: How to get a variable name as a string in PHP?

1

Вы можете использовать эту функцию:

function var_name(&$iVar, &$aDefinedVars) { 
    foreach ($aDefinedVars as $k=>$v) 
     $aDefinedVars_0[$k] = $v; 

    $iVarSave = $iVar; 
    $iVar  =!$iVar; 

    $aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars)); 
    $iVar  = $iVarSave; 

    return $aDiffKeys[0]; 
} 

Назовите это так:

var_name($Age, get_defined_vars()); 

Источник: http://mach13.com/how-to-get-a-variable-name-as-a-string-in-php

1

Ну ..

Вы можете выяснить, что называется output__variable_name_and_value функция с помощью debug_backtrace.

Затем вы знаете имя файла и номер строки, чтобы вы могли попробовать проанализировать исходный файл и выяснить, что между output__variable_name_and_value( и ).

Возможно, плохая идея!

Смежные вопросы