数组与类使用PHP的可变变量名需要的注意的问题


Posted in PHP onJune 20, 2013

有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名 :
$a = 'hello';
可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。
$$a = 'world';
通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello” 以及变量$hello,装的内容是 “world”。 于是,下面的语言:
echo "$a ${$a}";
跟下面的语句的输出完全一致:
echo "$a $hello";
它们都输出:hello world。
但是为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要 把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。

类属性也可以通过可变属性名来访问。可变属性名从产生调用所在的变量的访问范围内获取。例如,如果你的表达式是这样的:$foo->$bar,那么运 行时将会在本地变量范围内寻找变量$bar,它的值将会做为$foo对象的一个属性名。如果$bar是个数组也可以使用。

<?php 
class foo { 
    var $bar = 'I am bar.'; 
} 
$foo = new foo(); 
$bar = 'bar'; 
$baz = array('foo', 'bar', 'baz', 'quux'); 
echo $foo->$bar . "\n"; 
echo $foo->$baz[1] . "\n"; 
?>

上面的例子将会输出下面的结果:
I am bar.
I am bar.

请注意:可变变量名不能用于PHP函数和类里的超级全局数组变量上。变量$this也是一个不能动态取名的特殊变量。
PHP 相关文章推荐
可以在线执行PHP代码包装修正版
Mar 15 PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php制作动态随机验证码
Feb 12 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 PHP
PHP基于进程控制函数实现多线程
Dec 09 PHP
Linux系统下安装PHP7.3版本
Jun 26 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 #PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 #PHP
php Xdebug的安装与使用详解
Jun 20 #PHP
解析phpstorm + xdebug 远程断点调试
Jun 20 #PHP
hadoop中一些常用的命令介绍
Jun 19 #PHP
hadoop常见错误以及处理方法详解
Jun 19 #PHP
php常用Output和ptions/Info函数集介绍
Jun 19 #PHP
You might like
php上传文件问题汇总
2015/01/30 PHP
PHP文件操作方法汇总
2015/07/01 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python列表list排列组合操作示例
2018/12/18 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
python add_argument()用法解析
2020/01/29 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
销售个人求职信范文
2014/04/28 职场文书
企业诚信承诺书
2014/05/23 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
硕士学位论文评语
2014/12/31 职场文书
团员个人总结
2015/02/26 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书