有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名

<?php
$a = 'hello';
?>
可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。
<?php
$$a = 'world';
?>
通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello” 以及变量$hello,装的内容是 “world”。 于是,下面的语言:

<?php
echo "$a ${$a}";
?>
跟下面的语句的输出完全一致:
<?php
echo "$a $hello";
?>
它们都输出:hello world。
为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。

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

例1 可变变量名

<?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也是一个不能动态取名的特殊变量。

转载于:https://blog.51cto.com/webphp/1372605

什么是可变变量以及如何使用相关推荐

  1. PHP中可变变量和php可变函数到底有什么用?

    什么是可变变量? PHP提供了一种其他类型的变量--可变变量.可变变量允许我们动态地改变一个变量的名称. 可以看到,在这方面,PHP具有非常大的自由度--所有的语言都允许改变变量的值,但是并没有太多的 ...

  2. PHP变量的变量——可变变量

    可变变量的概念:通过获取一个变量的值做为另外一个变量的名称来操作变量,就是可以变量. Java代码   $method = "save".ucfirst($data_type['i ...

  3. php如何拼接变量名,php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符...

    php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符 方式一:使用花括号,前缀部分不需要用单引号 $nums10 = 100; $xxx*${bcount.$nums10}['m54'] ...

  4. php中有两个美元符号$$的变量——可变变量

    (*ˉ﹃ˉ) 好凉的天气!~~~ 直接上代码: <?php $a = 'hello'; $$a = 'world'; echo "$a ${$a}"; 以上代码的第二句,我们 ...

  5. php可变变量讲解,PHP可变变量实例详解

    什么是可变变量? 在PHP中有一个其他类型的变量,"可变变量".可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称. 可变变量的工作原理 这个特性的工作原理是用一个变量的 ...

  6. php 变量代码,php中的可变变量(代码详解)

    php中的可变变量 有时候使用可变变量名是很方便的.就是说,一个变量的变量名可以动态的设置和使用.一个普通的变量通过声明来设置,例如:<?php $a = 'hello'; ?> 一个可变 ...

  7. php 可变变量 数组赋值,PHP可变变量学习小结

    可变变量,就是一个变量的变量名可以动态的设置和使用.语法形式是PHP的特殊语法,其他语言中少见,本文给大家分享php可变变量学习小结,对php可变变量相关知识感兴趣的朋友一起学习吧 所谓可变变量,就是 ...

  8. php 可变变量 $$name

    //可变变量 $name = 'abc'; $$name = '123'; echo $name . "<br/>"; // abc echo $$name . &qu ...

  9. 关于java中求和的方法,用可变变量来解决这个问题

    在Java中可以说写一个求和的小程序是最简单不过的了.但是这里需要考虑的一个问题是有多少个参数传到方法体里面去进行求和呢? 举个例子,我们写一个a+b的程序相信大家都会,然后我们也会写一个a+b+c的 ...

最新文章

  1. Matlab与线性代数 -- 寻找矩阵的非零元素
  2. 用GDB调试程序(六)
  3. H5工程师在谷歌浏览器调试并开发原生APP项目的解决办法
  4. LoadRunner参数化时的各个选项说明
  5. vue项目中更新element-ui版本
  6. Laravel关联模型中过滤结果为空的结果集(has和with区别)
  7. tftp协议 服务器怎么返回错误信息,tftp执行流程
  8. Django Zip文件下载
  9. 国产操作系统之统信UOS安装
  10. matlab中函数在哪儿,matlab怎么调用函数
  11. 新浪微博登陆页面html代码,仿新浪微博登陆邮箱提示效果...-页面右下角弹出提示框示例代...-js获取IP和PcName(IE)在vs中可用_169IT.COM...
  12. 链接mysql 504_总结403到504的常用问题
  13. 大数据技术之Hive 第6章 查询 基本查询
  14. 桌面虚拟化项目的前期规划和测算
  15. “L2TP 链接尝试失败,因为安全层不能与远程计算机协商兼容的参数”解决方案
  16. 计算机存储1pb等于多少kb,存储容量:1TB等于多少GB?1PB等于多少TB?1EB等于多少PB?
  17. 十分钟写一个基于springboot+vue+redis+mysql的银行转账与用户后台管理系统,redis实现用户登录与缓存
  18. 电脑硬件升级完全解决方案-1
  19. Mapreduce入门--词频统计
  20. 凸规划问题与二阶锥规划

热门文章

  1. 面向对象方法的优势简化软件开发的过程_Java面试题说一说你的对面向过程和面向对象的理解...
  2. MobaXterm中修改服务器ip,如何使用mobaxterm登录云服务器
  3. Python -- reload 函数
  4. 报错,nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException??
  5. 利用SciTE的导出功能保持代码语法着色效果
  6. 18.外部相机校准——刚体变换,变换和旋转,外参数矩阵 测验_3
  7. windows app html5,使用 HTML5 來偵測位置 (HTML)
  8. mysql备库命令_mysql数据库备份命令
  9. css3 如何动态画一条直线_素描基础学习课:素描长直线的画法!把直线画直的关键!...
  10. 2017.7.19 Race 思考记录