首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 獲取變量名稱技巧:利用符號表與唯一值標記法

     編輯:PHP 綜合知識

核心原理

PHP 變量存於符號表 (HashTable),get_defined_vars() 返回當前作用域所有變量。通過給目標變量賦予唯一隨機值,再在符號表中反查鍵名,最後恢復原值。

通用函數實現

<?php
function get_variable_name(&$var, $scope = null) {
    $scope = $scope === null ? $GLOBALS : $scope;
    $tmp = $var;
    $var = 'tmp_value_' . mt_rand(); // 唯一標記
    $name = array_search($var, $scope, true); // 嚴格比較反查
    $var = $tmp; // 恢復原值
    return $name;
}
?>

使用場景示例

<?php
$a = '100';
echo '$a name is: ' . get_variable_name($a) . ' value: ' . $a;
// 輸出: $a name is: a value: 100

// 函數內部變量需傳入 get_defined_vars()
function test() {
    $a = '100';
    echo get_variable_name($a); // undefined (查 $GLOBALS 找不到)
}
function test2() {
    $a = '100';
    echo get_variable_name($a, get_defined_vars()); // a
}
?>

注意事項

  • 同值變量僅返回首個匹配鍵名
  • 引用傳參 &$var 必須,否則無法修改原變量
  • 僅適用於調試/日誌場景,業務邏輯勿依賴此特性
  • PHP 8.1+ 可考慮 ReflectionReference 但無法直接獲取變量名
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved