如何给变量取个简短且无歧义的名字
那么, 能否获取到一个变量的名字呢? 首先, 从可能性上分析, 我们知道, 在C语言中, 所有的符号在编译器都被”替换”掉了. 而在PHP中, 所有的变量都存储在称为”符号表”的HastTable结构中. 在解析执行的过程中, 依旧保留着着”符号”信息, 所以, 肯定是可以获取到的. 而在PHP中, 符号的作用域是和活动符号表相关联的. 同一时间, 只有一个活动符号表. 那么怎么理解活动符号表和符号表呢? 对于PHP来说, 当前活动的符号表是保存在全局变量EG(active_symbol_table)中的, 而于此同时, 还有个全局符号表保存在EG(symbol_table)中, 在进入一个函数调用的执行体之前, 会生成一个新的active_symbol_table, 并且会保持一个调用栈式样的符号表栈:EG(symtable_cache), 以便在退出函数调用的时候, 恢复之前的活动符号表(作用域). 同时在PHP中, 不能实现作用域继承, 也就是不能直接访问作用域外层的符号(需要加上golbal声明), 而如果加上global的声明的话, 也会在当前的活动作用域生成一个copy, 也就是说, 不存在在当前作用域可见的符号是保存在全局符号表的. 如上分析, 我们只需要在当前的活动符号表中, 就可以找到我们需要的变量的名称, 当然, 有了这些还不够, 我们如何在PHP的脚本中实现获取当前的符号表呢? get_defined_vars
然而有一个问题要注意, 就是get_defined_vars返回的是当前活动符号表中定义的变量名, 也就是说, 如果你需要包装一个函数, 类似于: get_variable_name($var)
并且尝试在这个函数中通过get_defined_vars来获取在调用get_variable_name时刻的符号表是行不通的. 所以, 我们获取变量名字的函数, 应该是下面的这个样子: get_variable_name($var, $scope)
现在, 已经得到了当前活动的符号表, 接下来, 如何得到变量的名字呢? 显然, 我们需要根据变量的值去查询这个表, 找到值等于要找值的变量, 但是, 这样做又有一个问题, 那就是, 可能会有多个变量的值相等啊?
然而有一个问题要注意, 就是get_defined_vars返回的是当前活动符号表中定义的变量名, 也就是说, 如果你需要包装一个函数, 类似于: get_variable_name($var)
并且尝试在这个函数中通过get_defined_vars来获取在调用get_variable_name时刻的符号表是行不通的. 所以, 我们获取变量名字的函数, 应该是下面的这个样子: get_variable_name($var, $scope)
现在, 已经得到了当前活动的符号表, 接下来, 如何得到变量的名字呢? 显然, 我们需要根据变量的值去查询这个表, 找到值等于要找值的变量, 但是, 这样做又有一个问题, 那就是, 可能会有多个变量的值相等啊?
佚名
2024-12-23 11:16:50
类似问题(10)
-
佚名2024-12-23 03:20:58
问j**a 如何获取变量的名字
答临时变量没办法获取,如果要用到这样的变量,可以定义一个特定的类。类变量的话可以用反射获取
-
佚名2024-12-23 09:08:40
问matlab中如何定义一个数组为全局变量?
答matlab 里定义全局变量,常量。oopmatlab R2008a开始支持面向对象了。在类定义中可以定义些类常属性,就是可以定义常量:[plain] view...
-
佚名2024-12-23 21:24:48
问如何用matlab定义系数和自变量?
答事情是这样的:使用syms a b c是正确的做法。但是不要将x y也定义在内,syms a,b,c,y,x岂不是将abcxy全都定义为了符号变量,那这样y=a...
-
佚名2024-12-23 08:00:00
问姓史的男孩取什么名字好,要简单,有深度,没歧义,歧音,谢谢。
答史腾逸:指才气奔放超逸。适用于男孩取名字。出自明代顾璘《国宝新编•陕西按察副使何景明》:“若乃天才腾逸,咳唾成珠,实亦人伦之隽乎!” 个人认为好的名字不仅诗意...
-
佚名2024-12-23 08:00:00
问spss中如何将变量命名
答spss中将变量命名的操作步骤如下:1、首先打开spss,弹出的窗口直接关闭。2、找到需要的数据,以列的形式进行粘贴。也可以直接竖排输入。只粘贴数据,不要粘贴文...
-
佚名2024-12-23 08:00:00
问一个简单的汇编语言变量的定义问题
答从string这个地址开始:第一个变量值是100第二个变量值0从第三个开始留出100字节空间
-
佚名2024-12-23 08:00:00
问汉字中无歧义的字有哪些
答它具有简明、精确、无歧义的优点
-
佚名2024-12-23 08:00:00
问如何在博途中定义一个默认值为1的变量
答在DB快中定义变量,并且初始值设置为1,即可
-
佚名2024-12-23 08:00:00
问printf如何输出字符串变量?
答char *p = "字符串变量";printf("%s",p);
-
佚名2024-12-23 08:00:00
问如何使用python 进行变量的命名?
答createPlot.ax1 是表示: ax1 是函数 createPlot 的一个属性,这个可以在函数里面定义也可以在函数定义后加入也可以example: ...
风水
起名
网名
说说
- 1 中考后的个性签名
- 2 关于lol的霸气签名
- 3 关于雨天的说说唯美
- 4 喜欢烟的说说
- 5 超好笑的说说
- 6 收心不浪说说
- 7 情感坚强的说说
- 8 自尊心被蹂躏的说说
- 9 男人多疑的说说
- 10 车和人都保养的心情说说