很多站长朋友们都不太清楚可变变量php,今天小编就来给大家整理可变变量php,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 什么是PHP中可变变量以及如何应用 2、 php中的可变变量和引用赋值有什么区别 3、 php变量定义方法 4、 php 什么是可变变量 5、 php可变变量求解 6、 php 中 两个$什么意思 什么是PHP中可变变量以及如何应用有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名<?php 可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。<?php 通过上面的两个语句,有两个变量被定义:变量$a,装的内容是hello 以及变量$hello,装的内容是 world。 于是,下面的语言:<?php 跟下面的语句的输出完全一致:<?php 它们都输出: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'); 上面的例子将会输出下面的结果:I am bar. 请注意,可变变量名不能用于PHP函数和类里的超级全局数组变量上。
php中的可变变量和引用赋值有什么区别从PHP内核的角度跟你解释下吧,你可以深入理解下,就完全明白了;
PHP的变量在内核中都是通过C语言的结构zval来存储的(你没学过C,你可以理解为是个对象,里面的成员变量都是类的属性,暂时先这样理解),zval结构如下:
struct _zval_struct {
zvalue_value value; // 存储变量的值
zend_uint refcount__gc; //表示引用计数 默认为:1
zend_uchar type; // 变量具体的类型
zend_uchar is_ref__gc; //表示是否为引用
};
举个例子,php代码如下:
$a = 10;
$b = $a;
这时$b没有引用,只是将$a的值赋给了$a,那么zval这个结构中的refcount__gc就变为2了,而is_ref__gc还是false,表示未引用,因为内核$a已经开辟了一块内存空间,当$a赋值给$b时,$b的值只指向了$a,这样就省去了重新开辟一块内存,但是当$b值被改变时($a的值不会变),$b又将会开辟一块新的内存空间,这就是所以的写时复制,到这里,楼主已经明白了,PHP变量在内核中的如何存储了,下面就讲下引用:
$a = 10;
$b = $a;
这个时候,内核中存储$a的结构is_ref__gc标记为true,代表是引用,那么$a和$b都指向了同一个内存地址,当$b=20的时候,$a也会变成20,说到这里,楼主应该明白区别了吧?
php变量定义方法PHP语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。以下是为大家分享的php变量定义方法,供大家参考借鉴,欢迎浏览!
1.定义常量define("CONSTANT", "Hello world.");
常量只能包含标量数据(boolean,integer,float 和 string)。
调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echo CONSTANT;
注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。
2.普通变量$a = "hello";
3.可变变量(使用两个美元符号($))
$$a = "world";
两个变量都被定义了:
$a 的内容是“hello”并且 $hello 的内容是“world”。
因此,可以表述为:
echo "$a ${$a}";或者 echo "$a $hello";它们都会输出:hello world
要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
4.静态变量
在函数内部static $a = 0;
注意:声明中用表达式的结果对其赋值会导致解析错误如static $a =3+3;(error)
静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用
5.全局变量
在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 PHP 自定义 $GLOBALS 数组:
如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用
global $obj;
注:对于变量的 static 和 global 定义是以 应用 的方式实现的
6.给变量赋值:传地址赋值(简单引用):
$bar = $foo; //加符号到将要赋值的变量前
改动新的变量将影响到原始变量,这种赋值操作更加快速
注意:只有命名变量才可以传地址赋值
注意:如果
$bar = $a;
$bar = $foo;
改变$bar的值只能改变变量foo的值,而不改变a的值(引用改变了)
7.PHP 超全局变量$GLOBALS : 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键标为全局变量的 名称。从 PHP 3 开始存在 $GLOBALS 数组。
$_SERVER : 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
$_GET : 经由 HTTP GET 方法提交至脚本的变量。
$_POST : 经由 HTTP POST 方法提交至脚本的变量。
$_COOKIE : 经由 HTTP Cookies 方法提交至脚本的变量。
$_FILES : 经由 HTTP POST 文件上传而提交至脚本的变量。
文件上传表单中要有 enctype="multipart/form-data"
$_ENV : 执行环境提交至脚本的变量。
$_REQUEST :经由 GET,POST 和 COOKIE 机制提交至脚本的.变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。该数组没有直接模拟 PHP 4.1.0 的早期版本。参见 import_request_variables()。
注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。
$_SESSION :当前注册给脚本会话的变量。
如何禁用phpinfo():
php.ini中
disable_functions = phpinfo()
重启web服务器。
php中的常量
常量只能用define(常量名,常量值);
常量只能包含标量数据(boolean,integer,float 和 string)。
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。如果常量名是动态的,也可以用函数
constant() 来读取常量的值。用 get_defined_constants() 可以获得所有已定义的常量列表。
注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。
如果使用了一个未定义的常量,PHP 假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT 对应 "CONSTANT")。此时将发出一个 E_NOTICE 级的错误。参见手册中为什么 $w3sky[bar] 是错误的(除非事先用 define() 将 bar 定义为一个常量)。如果只想检查是否定义了某常量,用 defined() 函数。
常量和变量不同:
* 常量前面没有美元符号($);
* 常量只能用 define() 函数定义,而不能通过赋值语句;
* 常量可以不用理会变量范围的规则而在任何地方定义和访问;
* 常量一旦定义就不能被重新定义或者取消定义;
* 常量的值只能是标量。
定义常量
<?PHP
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
php 什么是可变变量可变变量
有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:
<?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 是数组单元时也是一样。
也可使用花括号来给属性名清晰定界。最有用是在属性位于数组中,或者属性名包含有多个部分或者属性名包含有非法字符时(例如来自 json_decode() 或 SimpleXML)。
Example #1 可变属性示例
<?php
class foo {
var $bar = 'I am bar.';
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'I am r.';
}
$foo = new foo();
$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";
?>
以上例程会输出:
I am bar.
I am bar.
I am bar.
I am r.
I am B.
Warning
注意,在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this 变量也是一个特殊变量,不能被动态引用。
php可变变量求解$p = $_POST["test_{$a}_{$b}_{$c}"];
兄弟我回答过你类似的问题了吧 哈哈
php 中 两个$什么意思php中两个$也就是$$用来定义可变变量。
PHP作为网络开发的强大语言之一,现在应用非常广泛,具有开放源代码,跨平台性强,开发快捷,效率高,面向对象,并且易于上手,专业专注等诸多优点。各种PHP开发框架也让程序开发变的简单有效。
所谓可变变量,就是一个变量的名,又是一个变量。可变变量的语法形式是php特殊的语法,其他语言中少见。有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。
在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this变量也是一个特殊变量,不能被动态引用。
扩展资料:
一直以来php框架被广泛利用,多半都是基于mvc架构模式的,还有基于事件驱动模式的,大致列举三个国内框架:
1、ThinkPHP是一个性能卓越并且功能丰富的轻量级PHP开发框架,本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。从1.*版本开始就放弃了对PHP4的兼容,因此整个框架的架构和实现能够得以更加灵活和简单。。
2、Canphp是一个中国开源的php框架,主要的设计理念就是为了追求简单,减少php初学者的学习成本,而且追求高效率,模版类不提供其他标签,直接应用php的源代码,还有它是微内核设计,移植性强,松散耦合等特点,能集成到你任何一个系统里面。其中集成的http类相当的强大,采集图片速度相当的快,为什么这样呢?因为适用了模拟异步多进程的原理。
3、KYPHP是一个中国开源的PHP框架,kyphp严格遵守OOP和MVC的理念,具有控件化、可扩展性强。kyphp设计理念是自由、简单。既可以用php源码编程,也可以使用标签,支持多语言,多数据库,多皮肤,多模型部署等,为程序员节省更多的时间。
参考资料来源:
百度百科-PHP框架
百度百科-可变变量
关于可变变量php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于可变变量php 可变变量和不可变变量的区别的详细内容...