web安全php基础_php常量及可变变量(魔术变量)

这篇具有很好参考价值的文章主要介绍了web安全php基础_php常量及可变变量(魔术变量)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常量

php中常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

常量有两点需要特别注意的地方

  • 常量在整个脚本中都可以使用。
  • 常量值被定义后,在脚本的其他任何地方都不能被改变
设置 PHP 常量

设置常量,使用 define() 函数,函数语法如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

该函数有三个参数:

  • name:必选参数,常量名称,即标志符。

  • value:必选参数,常量的值。

  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。

注意:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。(可以使用@忽略警告)

示例如下,

<?php
	define('hi','php是世界上最好的语言',false);
	echo hi;
	
	echo "<br/>";
	//第三个参数true已被弃用,只能接收false参数,想要忽略警告则添加@
	@define('hello','helloWorld!!!',true);
	#正常输出
	echo hello;
	#报错,因为true被弃用现在常量大小写敏感
	echo HELLO;
?>

web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量
报错的意思是 不区分大小写的常量已弃用。此常量的正确大小写是“hello” 在第11行

常量是全局的

常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。

<?php
define("PHP", "PHP是世界上最好的语言");

function myTest() {
    echo PHP;
}

myTest();    // 输出PHP是世界上最好的语言
?>

web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量

常量与变量细节
  1. 常量和(全局)变量在不同的名字空间中。这意味着例如 HELLO 和 $HELLO是不同的。
<?php
	define("HELLO", "PHP是世界上最好的语言");
	$HELLO='hello world!!!';
	echo HELLO;
	echo "<br/>";
	echo $HELLO;
?>

web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量

  1. 常量和变量不同,常量只能包含标量数据(boolean,integer,float 和 string)

可变变量(魔术变量)

到了我最喜欢的可变变量了,在PHP中有一个其他类型的变量,“可变变量”。可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称。,可变变量声明为两个$$符(使用两个美元符号($))

<?php
$a='hello  world';
$$a="php是世界上最好的语言"; //这就是一个可变变量
var_dump($a);
echo "<br/>";
var_dump($$a);
?>

这时两个变量都被定义了,我们可以尝试输出他们,如下,变量正常输出了
web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量

但这里有一个有意思的问题,当我们正常声明了一个可变变量,我们可以再直接声明一个可变变量

<?php
	$a='hello  world';
	$$a="php是世界上最好的语言"; //这就是一个可变变量
	$$b='hhh'; //直接声明$$b编译器不再报错
	var_dump($a);
	echo "<br/>";
	var_dump($$a);
	echo '<br/>';
	var_dump($b);
	echo '<br/>';
	var_dump($$b);
?>

查看他们的输出结果,可以看到$b的值依旧是NULL
web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量

可变变量的作用

上面说到了,可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称
即,在PHP中如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后,将该值作为“真正”的变量名称。例如:
实例如下

<?php
	$a='hello';
	$hello="php是世界上最好的语言"; 
	var_dump($a);
	echo "<br/>";
	var_dump($$a);
	echo  "<br/>";
	var_dump($hello); //当掉用$hello的时候输与$$a是一样的
?>

输出如下,
web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量
当$a的值发生改变时,通过$$a的调用的变量也得相应的改变

<?php
	$a='hello';
	//因为$a=hello,使用$$a=$hello(hello是$a的值,当有两个$时会被这样解析);
	$hello="php是世界上最好的语言"; //原本是打算写$$a的这才是可变变量的声明方式,但是不宜于理解
	var_dump($a);
	echo "<br/>";
	var_dump($$a);
	echo  "<br/>";
	var_dump($hello); //当掉用$hello的时候输与$$a是一样的
	echo  "<br/>";
	$a='hi';
	var_dump($$a);//$$a会被解析从$hi,因为没有声明过$hi,所以$$a输出null
?>

输出如下
web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量

可变变量之于数组

要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}
示例如下

<?php
	$a=array("aa","bb","cc");
	//这的${$a[0]}会被浏览器解析成${aa}(aa就是$a[0]的值),也就是说,这样声明的变量,可以使用$aa取出来
	${$a[0]}='PHP是世界上最好的语言';
	echo $aa;
	echo "<br/>";
	echo ${$a[0]};
	echo "<br/>";
	${$a}[0]="hello world";
	echo ${$a}[0];
?>

输出如下
web安全php基础_php常量及可变变量(魔术变量),php,android,android studio,php常量,php可变变量,php魔术变量文章来源地址https://www.toymoban.com/news/detail-528435.html

到了这里,关于web安全php基础_php常量及可变变量(魔术变量)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • web安全php基础_php数据类型

    web安全php基础_php数据类型

    PHP 支持以下几种数据类型: String(字符串) Integer(整型) Float(浮点型) Boolean(布尔型) Array(数组) Object(对象) NULL(空值) Resource(资源类型) PHP 字符串 一个字符串是一串字符的序列,就像 “Hello world!”。 可以将任何文本放在单引号和双引号中: 执行效果如下

    2024年02月12日
    浏览(11)
  • Day60:WEB攻防-PHP反序列化&POP链构造&魔术方法流程&漏洞触发条件&属性修改

    Day60:WEB攻防-PHP反序列化&POP链构造&魔术方法流程&漏洞触发条件&属性修改

    目录 PHP-DEMO1-序列化和反序列化 序列化操作 - 即类型转换 序列化案例 PHP-DEMO2-魔术方法触发规则 __construct(): //当对象new的时候会自动调用 __destruct()://当对象被销毁时会被自动调用 __sleep(): //serialize()执行时被自动调用 __wakeup(): //unserialize()时会被自动调用 __invoke(): //把对象当

    2024年04月27日
    浏览(22)
  • 变量与常量(基础)

    变量的概念:变量用于存储编程所使用的数据和方法。 声明一般变量:var, let, const。其中let和const是es6的语法。 声明其他特殊变量:function,class,import等 声明变量: 变量用于存储数据,因此可以把变量当成是一个\\\"容器\\\" 存储在变量中的数据,叫做\\\"变量的

    2024年02月05日
    浏览(10)
  • php基础学习之常量

    php基础学习之常量

    常量是在程序运行中的一种不可改变的量(数据),常量一旦定义,通常不可改变(用户级别)。 使用define函数:define(\\\"常量名字\\\", 常量值); 使用const:const 常量名字 = 常量值; //该方法类似C、C++、Java、Python等语法,在php5.3之后才支持 示例: 注意细节—— define和cons

    2024年01月23日
    浏览(10)
  • Java基础的变量与常量

    Java基础的变量与常量

    使用IDEA进行编写java程序 第一行:public  class是定义类的固定写法,Hello表示类名要与文件中的名字相同 第二行:主函数,是程序的入口 第三行:输出语句,():里面表示要输出的内容 注意点: print输出方式是输出后 不进行换行操作的 。 比如:输出两次\\\"我爱学习Java

    2024年02月08日
    浏览(13)
  • web安全php基础_php语法格式与注释

    web安全php基础_php语法格式与注释

    php脚本以php 开始 以 ?结束 但是先前创建页面的时候我们发现phpinfo只有php开头,并没有?结尾 在这里我们可以手动给它加上?结尾 PHP指令分隔符   与C、Perl及Java一样,PHP 需要在每个语句后用分号结束指令。在编写 PHP 代码的时候,我们需要在每一行代码指令后面添加一个分

    2024年02月12日
    浏览(14)
  • 【Rust 基础篇】Rust可变静态变量:全局状态的可变性管理

    Rust是一种以安全性和高效性著称的系统级编程语言,其设计哲学是在不损失性能的前提下,保障代码的内存安全和线程安全。为了实现这一目标,Rust引入了\\\"所有权系统\\\"、\\\"借用检查器\\\"等特性,有效地避免了常见的内存安全问题。然而,有时候我们需要在程序的整个生命周期

    2024年02月15日
    浏览(13)
  • web安全php基础_php之string对象详解

    web安全php基础_php之string对象详解

    字符串变量用于包含有字符的值。 在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。 在下面的实例中,我们创建一个名为 txt 的字符串变量,并赋值为 “Hello world!” 。然后我们输出 txt 变量的值: 输出如下 在 PHP 中

    2024年02月12日
    浏览(12)
  • Go语言基础之变量和常量

    标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123 是指编程语言中预先定义好的具有特殊含义的标识符。

    2024年02月12日
    浏览(14)
  • 编程笔记 Golang基础 010 常量和变量

    在 Go 语言中,常量(Constant)是一个固定的值,在程序运行期间不可被修改。它们通常用来表示那些在整个程序执行过程中不会变化的数值或其他类型的数据。在 Go 语言中,变量是用来存储数据的容器。 在 Go 语言中,常量(Constant)是一个固定的值,在程序运行期间不可被

    2024年02月21日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包