如何给变量取个简短且无歧义的名字
那么,能否获取到一个变量的名字呢?首先,从可能性上分析,我们知道,在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-07-04 06:31:05
类似问题(10)
-
佚名2024-07-04 13:08:32
问matlab如何同时给几个变量赋值?
答[a,b,c]=deal(91,109,91)
-
佚名2024-07-04 04:12:27
问JS如何动态生成变量名
答eval("var a=3"); //这个字符串里的变量名a,可以随便写,动态的alert(a); //显示3
-
佚名2024-07-04 08:00:00
问姓史的男孩取什么名字好,要简单,有深度,没歧义,歧音,谢谢。
答史腾逸:指才气奔放超逸。适用于男孩取名字。出自明代顾璘《国宝新编•陕西按察副使何景明》:“若乃天才腾逸,咳唾成珠,实亦人伦之隽乎!” 个人认为好的名字不仅诗意...
-
佚名2024-07-04 08:00:00
问一个简单的汇编语言变量的定义问题
答从string这个地址开始:第一个变量值是100第二个变量值0从第三个开始留出100字节空间
-
佚名2024-07-04 08:00:00
问spss中如何将变量命名?
答<p>在 name 中改名字</p> <p></pSPSS(Statistical Product and Service Soluti...
-
佚名2024-07-04 08:00:00
问汉字中无歧义的字有哪些
答它具有简明、精确、无歧义的优点
-
佚名2024-07-04 08:00:00
问什么是操作变量?什么是名义变量?名义变量与操作变量有什么联系
答这个在我的印象中应该是实参和形参吧,就是实际参数和形式参数,怎么和你解释呢?好比说我定义一个变量a和一个变量b,再定义一个变量x和一个变量y,将a的值传递给x,...
-
佚名2024-07-04 08:00:00
问c++中两个局部变量和全局变量,变量名相同,请问内存空间如何分配?
答因为整个程序里只有一句int x;也就是只有一个声明x变量的语句。这样一来程序里使用的所有x都是同一个变量。只不过声明的时候你没有初始化而是在main函数里初...
-
佚名2024-07-04 08:00:00
问如何用python动态生成变量名字
答你好,方法如下:要写一个程序,让linuxany1=1,linuxany2=2,… inuxany100=100,你会怎么做?最容易想到的自然是eval,但是实...
-
佚名2024-07-04 08:00:00
问姓陈的谐音好听无歧义名字
答陈博文:通晓古代文献。适用于男孩取名字。这个名字取自《论语•雍也》:“君子博学于文,约之以礼。” 环境和机遇我们个人之力无法改变太多;性格和能力却可以后天培养,...
风水
起名
网名
- 1 青木网名
- 2 带空气的网名
- 3 繁体字2字网名
- 4 陆开头的网名
- 5 秋天的好听的扣扣网名
- 6 带碧字和娟的网名
- 7 绝地求生 昵称
- 8 潮流韩文昵称
- 9 海贼王钟爱粉的昵称
- 10 贴吧的昵称和ID是什么
说说
- 1 缘分天空个性签名
- 2 带爱子的qq签名
- 3 心情难过的说说
- 4 人死如灯灭的说说
- 5 qq说说喝酒心情短语
- 6 微信如何在朋友圈发说说
- 7 向往幸福说说写给自己
- 8 夜班老师说说
- 9 委婉朋友圈要钱的说说
- 10 中考解放的说说5字