什么是可变变量?

在PHP中有一个其他类型的变量,“可变变量”。可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称。

可变变量的工作原理

这个特性的工作原理是用一个变量的值作为另一个变量的名称。例如,我们可以设置$str的值:

$name = 'str';

于是,我们就可以用

name 取代$str。

name = 5;

这个代码等价于:

$str= 5;

使用方法

使用可变变量就是在变量的前面多加一个美元符号“$”。

数组使用可变变量

为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]

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

可变变量名不能用于PHP函数和类里的超级全局数组变量上。变量$this也是一个不能动态取名的特殊变量。

实例

下面的实例使用可变变量改变变量的名称。代码如下:<?php

header("content-type:text/html;charset=utf-8"); //设置编码

$str='trans'; //声明变量$str

$trans='PHP中文网'; //声明变量$trans

echo $str; //输出变量$str

echo "
";

echo $$str; //通过可变变量输出$trans的值

?>

实例详解:

首先定义两个变量$str和$trans,并且输出变量$str的值,然后使用可变变量来改变变量$str的名称,最后输出改变名称后的变量值

运行结果如下:

上面就是对可变变量的简单用法,下一节,为大家介绍“PHP的预定义变量”

相关视频教程推荐:《php.cn独孤九贱(4)-php视频教程》可变变量:为创建新变量提供了一种新思路

php可变变量讲解,PHP可变变量实例详解相关推荐

  1. python函数中可变参数的传递方式是_Python函数可变参数定义及其参数传递方式实例详解...

    本文实例讲述了Python函数可变参数定义及其参数传递方式.分享给大家供大家参考.具体分析如下: python中 函数不定参数的定义形式如下: 1.func(*args) 传入的参数为以元组形式存在a ...

  2. python中可变参数args传入函数时储存的类型是,Python函数可变参数定义及其参数传递方式实例详解...

    本文实例讲述了Python函数可变参数定义及其参数传递方式.分享给大家供大家参考.具体分析如下: python中 函数不定参数的定义形式如下: 1.func(*args) 传入的参数为以元组形式存在a ...

  3. java代码逻辑讲解_java逻辑控制语句实例详解

    一.Java选择结构 1.if(条件)-else结构 当条件==true时执行if下的语句,否则执行else下的语句 2.if(条件1)-else if(条件2)-else结构(相关视频教程推荐:ja ...

  4. php的可变函数,php之可变函数的实例详解

    php之可变函数的实例详解 php的可变函数,今天大概的了解下,是看php手册总结的,觉得用处不大: PHP 支持可变函数的概念.这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数, ...

  5. java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...

    这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...

  6. 【Linux】19.Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解

    Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解 参考链接: https://www.jianshu.com/p/a62e1d327023 LD_LIBRARY_PATH中的LD ...

  7. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...

  8. python导入模块的变量_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 for ...

  9. 合法的python变量名import_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 imp ...

最新文章

  1. 面板服务器默认是什么系统,免费Linux服务器管理面板,你用的是哪个?
  2. linux apache cpu,linux – Apache使用100%的CPU. “ps”命令可以告诉我它在做什么吗?...
  3. centos7全离线安装redis3.2.8集群
  4. 集合框架知识系列05 HashMap的源码分析和使用示例
  5. 【git学习二】git基础之git管理本地项目
  6. oracle拆分字段为多行,一句话实现字段拆分成多行
  7. 价格的格式化 php,价格格式化问题。
  8. C#Array(数组) 一维、多维数组
  9. C# 图片文件文本string格式 传输问题
  10. 福建职称计算机评聘任,职称聘任工作的有关补充规定(试行)
  11. 使用IHTMLDocument3 的getElementById获取控件总是返回空的解决方法
  12. 数据集图片批量重命名
  13. 顺丰业绩突然爆雷:预计巨亏9-11亿!京东、美团等10家平台承诺不用大数据杀熟;苹果推迟MacBook和iPad生产|极客头条...
  14. Linux文件查找及压缩工具
  15. 微信开放平台错误码大全
  16. d3-axis坐标轴
  17. 2019年的人工智能需要什么
  18. 今日踩坑Maven:omitted for duplicate
  19. 如何用70行Java代码实现深度神经网络算法
  20. java对图片进行压缩处理

热门文章

  1. Symbol Mc1000 声音的设置以及播放
  2. 「CH2101」可达性统计 解题报告
  3. Android:Application
  4. 小议H.264技术发展趋势
  5. 漫画兔善搞2007-等待爱玛马士基号的垃圾
  6. 毕业多年,我们转变了多少?
  7. 数据透视表和数据交叉表_数据透视表的数据提取
  8. arduino消息服务器,在C(Arduino IDE)中将API链接消息解析为服务器(示例代码)
  9. leetcode 1269. 停在原地的方案数(dp)
  10. 理解Java里面的必检异常和非必检异常