PHP开始啦--变量作用域,global关键词,static关键词

xiaoxiao2021-02-28  96

PHP是运行在服务器端的脚本语言,PHP代码在服务器上执行,以纯HTML结果返回浏览器

PHP作用:

能够生成动态页面内容能够创建,打开,读取,写入,删除以及关闭服务器上的文件能够接收表单数据能够发送并取回cookies能够添加,删除,修改数据库中的数据能够限制用户访问网站中的某些页面能够对数据进行加密

PHP脚本可放置于文档中的任何位置

PHP脚本以<?php开头,以?>结尾

PHP文件的默认文件扩展名是“.php”

PHP注释:

1.单行注释:

//#

2.多行注释:

/* ………*/

变量

1.变量命名规则:

变量以$符号开头以标识符命名规则为准对大小写敏感

2.PHP不用单独创建变量,变量在首次被赋值时被创建 例.

<?php $a="Nico"; $b=5; $c="5"; ?>

如上,不用告知PHP变量的数据类型,PHP会根据它的值,自动把变量转换为正确的数据类型

3.显示变量数据类型:var_dump($变量名)

如.

<?php $x="5"; $y=5; echo var_dump($x); //string '5' (length=1) echo var_dump($y); //int 5 ?>

4.获取当前变量消耗的内存:memory_get_usage($变量名)

如.

<?php $x=5; echo memory_get_usage($x); //262144 ?>

变量作用域

可以在PHP脚本的任意位置对变量进行声明。 变量的作用域:变量能够被引用/使用的那部分脚本

PHP的三种不同的变量作用域:

local局部global全局static静态

local和global作用域

函数之外声明的变量拥有global全局作用域,只能在函数之外进行访问函数内部声明的变量拥有local局部作用域,只能在函数内部进行访问

例.

<?php $x=5; //拥有global全局作用域 function mTe(){ $y=10;//拥有local局部作用域 echo "函数内部变量x是:$x"; echo "<br>"; echo "函数内部变量y是:$y"; } mTe(); echo "<br>"; echo "函数之外变量x是:$x"; echo "<br>"; echo "函数之外变量y是:$y"; ?>

运行结果:

如上,$x是创建于函数之外的全局变量,拥有global全局作用域; $y是创建于函数内部的局部变量,//拥有local局部作用域。

故此,在函数内部输出$x和$y这两个变量的值时,$x的值无法输出,可以输出$y的值,因为$y是在函数内部创建的局部变量; 在函数之外输出$x和$y这两个变量的值时,$y的值无法输出,可以输出$x的值,因为$x是全局变量

注:可以在不同的函数中创建名称相同的局部变量,因为局部变量只能作用于创建它的函数中

global关键词

作用:在函数内部访问/定义全局变量

例. 在函数内部访问全局变量:

<?php $x=5; $y=10; function mTe(){ global $x,$y; $y=$x+$y; /*等效于 $GLOBALS['y']==$GLOBALS['x']+$GLOBALS['y'];*/ } mTe(); echo $x."<br>".$y; ?>

运行结果:

例. 在函数内部定义全局变量:

<?php function mTe(){ global $x; $x=123; /*以上两句必须分开写,不能合成一句*/ /*等效于 $GLOBALS['x']=123;*/ } mTe(); echo $x; //123 ?>

PHP在$GLOBALS[‘全局变量名’]的数组中存储了所有的全局变量。可以在函数内直接访问,也可直接更新全局变量

static关键词

作用:使函数完成/执行后,某个局部变量不被删除。在首次声明变量时使用static关键词

例.

<?php function mTe(){ static $x=10; echo $x; $x++; } mTe(); //10 mTe(); //11 mTe(); //12 ?>

如上, mTe()函数执行完后,局部变量$x本应被删除,但首次声明时使用static关键字,故局部变量$x在函数 mTe()执行完后不会被删除,每当函数被调用时,局部变量$x存储的信息都是函数最后一次被调用时所包含的信息

若首次声明局部变量$x时未使用static关键字,则每次调用函数 mTe()结果均为10

转载请注明原文地址: https://www.6miu.com/read-44398.html

最新回复(0)