数组与类使用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的一些小问题
Jul 03 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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安装问题
2006/10/09 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
python使用生成器实现可迭代对象
2018/03/20 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
公司市场部岗位职责
2013/12/02 职场文书
社区工作者先进事迹
2014/01/18 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server