欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

php教程

PHP可变变量

php教程 我的站长站 2019-05-07 共126人阅读

“可变变量”这一概念是 PHP 的特色语法,在其它的编程语言中一般没这种骚操作……

通俗的说,可变变量就是“变量的变量”,一个变量的名,又是一个变量 。描述起来很绕,下面直接看代码!

可变变量的使用

要定义一个可变变量很简单,只需在一般的变量前面再加上一个美元符号"$"

<?php  
$hello= '你好';  
$a= 'hello';  
echo$$a;  
?>

运行上面的代码,输出的是 “你好”。为什么会输出 “你好” 呢,我们来逐句解析。

第一句定义了一个普通的变量 $hello ,值为 “你好”;

第二句也定义了一个普通变脸 $a ,值为 “hello”;

第三句就用上了可变变量 $$a ,因为之前定义的 $a 的值为 “hello”,所以 $$a 就相当于 $hello,所以最终输出了 “你好”……

让我们再来看下一个例子……

<?php  
$a= 'hello';  
$$a= 'world';  
echo"$a ${$a}";  
?>

以上代码中,$a 的内容是 “hello”,$$a 的内容是 “word”。同时,因为 $$a 是一个可变变量,所以它等效于 $hello。因此上述代码也可以写成

<?php  
$a= 'hello';  
$$a= 'world';  
echo"$a $hello";  
?>

它们输出的内容都是 “hello world”

可变变量与数组

要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。

解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。

可变变量与类

类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar 表达式,则会在本地范围来解析 $bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也是一样。

也可使用花括号来给属性名清晰定界。最有用是在属性位于数组中,或者属性名包含有多个部分或者属性名包含有非法字符时(例如来自 JSON_decode() 或 SimpleXML)。

<?php  
// 可变属性示例
classfoo {  
var$bar= 'I am bar.';  
var$arr= array('I am A.', 'I am B.', 'I am C.');  
var$r= 'I am r.';  
}  
$foo= newfoo();  
$bar= 'bar';  
$baz= array('foo', 'bar', 'baz', 'quux');  
echo$foo->$bar. "n";  
echo$foo->$baz[1] . "n";  
$start= 'b';  
$end= 'ar';  
echo$foo->{$start. $end} . "n";  
$arr= 'arr';  
echo$foo->$arr[1] . "n";  
echo$foo->{$arr}[1] . "n";  
?>

玩坏了的可变变量

在一个普通的变量前边加一个 “$” 它就变成了可变变量,那么要是在可变变量的前面再加一个 “$” 呢?再加两个,加 N 个呢? 统统没问题……

<?php  
$Bar= "a";  
$Foo= "Bar";  
$World= "Foo";  
$Hello= "World";  
$a= "Hello";  
$a; // = Hello
$$a; // => $Hello = World
$$$a; // => $$Hello => $World = Foo
$$$$a; // => $$$Hello => $$World = $Foo = Bar
$$$$$a; // => $$$$Hello => $$$World = $$Foo = $Bar = a
// 以下相当于进入了循环...
$$$$$$a; // = Hello
$$$$$$$a; // = World
// 只要你愿意,你可以在前面加无数个美元符……
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$a;  
// Ps:据说搞 PHP 开发的都不差钱,因为有很多的 $ ... ...
?>


相关推荐
  • cms源码
  • php代码
  • 最新phpcmsv9.6.3系统源码下载
    最新phpcmsv9.6.3系统源码下载

    源码介绍phpcmsv下载截图由于phpcms官方不再维护,大量phpcms用户面临着各种bug风险,由网友自发维护更新phpcmsv9.6.3系统源码。该源码是咋phpcms v9.6.3的镜像基础上进行维护的,提供bug修复、新模块...

    php源码 214 3年前
  • PHP幽梦影视CMS源码 自动采集
    PHP幽梦影视CMS源码 自动采集

    PHP幽梦影视CMS源码,自主开发的一款自动采集影视源码,自动采集资源站最新内容。搜索模块,播放模块,UI也是用大众喜爱的类型。 核心代码已用SG11加密,但不影响使用和二次开发,代码也做了最大的优化,速度...

    php源码 419 3年前
  • ASPCMS 2.7.3网站源码
    ASPCMS 2.7.3网站源码

    ASPCMS 2.7.3网站源码通用标签说明1、基本标签:{aspcms:sitepath} 网站终极目录(可放在二级目录,其它语言则在三级目录){aspcms:languagepath} 语言目录{aspcms:siteurl} ...

    asp源码 263 4年前
  • Asp.Net淘特Cms网站源码
    Asp.Net淘特Cms网站源码

    Asp.Net淘特Cms网站源码安装方法1、在您的sqlserver企业管理器中,新建数据库totnetcms,然后在totnetcms上右键-所有任务-还原数据库-从设备-找到CMS所在文件夹下database目录里的data.bak文件进行还原...

    .net源码 128 4年前
  • 马克斯CMSV3仿快播电影网站源码
    马克斯CMSV3仿快播电影网站源码

    马克斯CMS模板说明本模板支持马克斯CMS3.0网站管理系统使用,模板增加了些新的页面,有最新排行榜,热门排行榜页,自定义页,也需要对马克斯程序比较了解,这样在安装模板时比较容易。网站模板特点一、二级...

    php源码 469 4年前
  • 支付宝企业账户转账个人账户php接口代码

    前言支付宝企业账户转账个人账户php接口代码,该接口主要用于平台对用户奖励的发放,场景也很简单就是我在你平台上有余额,我提现,平台给钱。只不过项目中是用的官方的SDK调用的,仔细看了下那个SDK目录,把很多无用的接口(目前自己用不上)也包含在里面,作为强...

    php教程 159 1年前
  • php判断目录文件是否存在

    一段简单的php判断目录文件是否存在代码,收藏记录一下,以后肯定用得到的。<?php$filename = &#39;../../e/install/&#39;; if (file_exists($filename)) { echo "<h3><div align=&#39;center&#39;><font color=&#39;#FF0000&#39;>存在安全风险!请将 ...

    php教程 114 2年前
  • curl函数获取API接口数据方法

    PHP利用curl函数,获取API接口数据方法示例代码,自用收藏<?php $weather = curl_init(); curl_setopt($weather,CURLOPT_URL,"https://api.pc2801.com/cqssc/".time()); curl_setopt($weather, CURLOPT_SSL_VERIFYPEER, false); //如果...

    php教程 88 2年前
  • 158网盘直连解析代码

    API代码<?php/*** @package 158Pan* @author Andy* @version 1.2.0* @link https://lsland.cn*/// 指定允许其他域名访问 header(&#39;Access-Control-Allow-Origin:*&#39;);header(&#39;content-type:application/json;charset:utf-8&#39;);functi...

    php教程 129 2年前
  • PHP获取QQ用户昵称+头像API接口代码

    如果要获得QQ用户的头像和昵称,需要在腾讯开放平台申请API接入才可以,但是这个不需要!只需要输入用户的正确的QQ号即可返回用户的头像和昵称。API接口代码<?php // 通过QQ号即可获取用户信息 // 获取QQ头像接口// http://q1.qlogo.cn/g?b=qq&nk=QQ号&s=...

    php教程 217 2年前