PHP变量与常量

变量

变量是包含一个名称和一个值的“标识符”。在php中,可理解为

使用a1变量就是指使用a1来指代2这个数据,对a1进行运行就是对2进行运算如:

$a1++;    //将a1的值自加一变为3然后返回赋值给a1

形式:变量必须以$开头,后面紧跟变量名

注意:在php中,只要出现$符号,其后面紧跟的符号便会识别为一个变量。如:

echo “你好$money”     //money便会被识别为一个变量,因为不存在money这个变量会出现问题

基本变量使用

  • 定义变量:直接给变量赋值就是定义,不支持js中的定义形式:定义但不赋值的语法。
  • 取值:所有需要变量值的语句中可以取值,包括:输出:echo $n1;给其他变量赋值:$n2=$n1;参与运算:$n3=$n1+3;
  • 判断变量是否存在,isset():存在返回true,否则返回false(实际上,如果一个变量的值为null,返回的也是false)

  • 修改变量值(赋值):第二次及以后跟一个变量赋值就是修改变量值。
  • 删除unset():断开变量名与数据的引用关系

 命名规则

通常命名包括变量名、函数名、常量名、类名、接口名等等

基本规则

行业规则(潜规则)

基本规则保证语法的正确性,行业规则更加买账

如下:

1.驼峰命名法:示例:name,myName,myFatherName

2.帕斯卡命名法:示例:Name,MyName,MyFatherName

3.下划线间隔法:示例:name,my_name,my_father_name

变量间的传值方式

说明:PHP中所有变量默认都是值传递

值传递

将一个变量的数据拷贝给另一个变量,代码如下:

  1. 只能使用大小写字母,下划线和数字
  2. 数字不能开头
  3. 不能跟关键字重名的(if,function,else)

v1和v2只是数据相同,这两个变量没有关系(互相独立)

引用传值

将一个变量的引用关系拷贝一份赋值给另一个变量

赋值之后,两个变量指向同一个数据,对其中任意一个变量执行操作,两个变量都会改变。如:

结果为:

另外,在这种情况下,unset()一个变量,但另一个跟它有关的变量不受影响,测试:

结果为:

可变变量

所谓可变变量,就是一个变量的名又是一个变量

可变变量的语法是php中一种特殊的语法--其他语言很少见

$v1="abc";              //字符串变量,内容是字符串“abc”

$abc=10;                //普通变量

echo $$v1;              //此时,就所谓可变变量

echo 双引号里不能识别函数,可识别变量

预定义变量

综述:

1.预定义变量又叫超全局变量,包括:$_GET,$_POST,$_REQUEST,$GLOBALS,$_COOKIE,$_SESSION

2.作用域:PHP中,自定义变量的作用域分两种:全局作用域(函数外),局部作用域(函数内)。但预定义变量的作用域称为“超全局作用域”:全局作用域(函数外),局部作用域(函数内)

3.数据类型问题:超全局变量都是数组

$_GET变量(数组):

get常常体现用户提交数据,通常出现在:<form action="abc.php" method="get">.........</form>,“表单以get方式提交数据”

则$_GET该预定义数组变量指以这种方式提交的所有数据的集合(数组)

注意:get这个词似乎没有中文翻译

实际上,在网页中以get方式提交数据有多种

形式一:

<form action="abc.php" method="get">
    项目一:<input type="text" name="uName" />
    项目二:<input type="password" name="uPswd" />
    <input type="submit" value="提交">
</form>

结果为:

作用:用户填写表单数据并提交后,会将数据发送提交给页面(abc.php),也可以理解为打开abc.php网页

形式二:

<a herf="abc.php"?uName=test1&nPswd=123>文字</a>

作用:用户点击链接,会将数据发送提交给页面(abc.php),也可以理解为打开abc.php网页

形式三:

<script>
    location.herf="abc.php"?uName=test1&uPswd=123;    //利用location对象的属性herf
</script>

作用:用户点击链接,会将数据发送提交给页面(abc.php),也可以理解为打开abc.php网页

形式四:

<script>
    location.assign="abc.php"?uName=test1&uPswd=123;    //利用location的方法assign
</script>

作用:用户点击链接,会将数据发送提交给页面(abc.php),也可以理解为打开abc.php网页

不管是以哪种形式get提交过来的数据,获取数据是一样的:(在abc.php中)

<?php
    $V1=$_GET['uName'];
    $v2=$_GET['uPswd'];
?>

举例:代码如下

get_2.php文件中的代码:

结果运行:

点击提交运行get_2.php文件:

$_POST变量

类似$_GET变量,$_POST代表页面通过 post方式提交过来的数据形成的数组,post提交数据通常只有一种形式

<form action="abc.php" method="get">
    项目一:<input type="text" name="uName" />
    项目二:<input type="password" name="uPswd" />
    <input type="submit" value="提交">
</form>

 作用:用户填写表单数据并提交后,会将数据发送提交给页面(abc.php),也可以理解为打开abc.php网页

abc.php接受数据的形式为:

<?php
    $V1=$_GET['uName'];
    $v2=$_GET['uPswd'];
?>

通常网页中的form表单一般用post方式,get方式主要体现在其他三种形式上

案例:设计一个页面,对2个数据进行基本运算,使用post方式

代码:post_1.php

运行post_2.php文件

运行post_1.PHP文件显示:

点击提交结果为:

$_REQUEST变量

$_REQUEST数组中包括了所有$_POST数据和$_GET数据--其实是由内部系统自动存储,通常$_POST数据和$_GET数据不同时出现的时候,$_REQUEST就代表其中一个。(用户无论是以post或者get方式数据发送都可以用$_REQUEST接收)

下面看get和post数据同时提交的情况:

<form action="abc.php"?a=5&b=10 method="post">
    项目一:<input type="text" name="uName" />
    项目二: <input type="password" name="a">
    <input type="submit" value="提交">
</form>

此时,uName和a两个数据已post方式提交给abc.php,同时另一个a和b以get方式提交给abc.php,则在abc.php中,取得数据的方式有:

1.$v1=$_GET['a'];
  $v2=$_GET['b'];
  $v3=$_POST['uName'];
  $v4=$_POST['a'];

2.$v1=$_REQUEST['a'];
  $v2=$_REQUEST['b'];
  $v3=$_REQUEST['uName'];
  $v4=$_REQUEST['a'];
 

这时以第二种方式发现get方式和post方式发送的数据有重名,解决方案如下:

1.尽量避免重名

2.如果重名,此时$_REQUEST['a']只会记录一个数据,且记录的数据由php.ini文件的配置决定

    2.1由request_order决定,当request_order=“GP”,表示先get数据后post数据,则get数据会被post数据覆盖;反之post数据会被get数据覆盖

示例代码:

运行查看request数组:

反之,修改php.in配置为request_order=“GP”。运行结果为:

**$_POST,$_GET,$_REQUEST三者相互独立,也就是说任意unset()其中一个变量,任意两个不受影响

$_SERVER变量(数组)

该变量存储了客户端的一些请求信息或设置信息,不同服务器、不同网页上的数据可能不同

常用

  1. REMOTE_ADDR,用户的ip地址
  2. SERVER_ADDR,服务器端的ip地址
  3. SERVER_NAME,服务器名
  4. DOCUMENT_ROOT,站点绝对路径
  5. PHP_SELF,当前网页的文件路径
  6. QUEER_STRING,表示一个get请求的整体字符串,类似:http://www.abc.com/abc.php?a=5&b=10链接地址?后面的全部

输出所有项

$_GLOBALS变量(数组)

把定义的所有全局变量存储到$_GLOBALS数组中:变量名就是该数组的下标,变量值就是对应的值

常量

含义:用于存储一个不会变化也不希望变化的数据的标识符

命名规则同变量,但通常习惯于将常量的名称用“全大写形式”

定义形式

  1. 使用define()函数定义:使用形式:define("常量名",常量值);推荐常用名使用全大写模式

    2.使用const语法定义:使用形式:const 常量名=常量值;const语法只能用在顶层域中(即大括号外);const语法不能在函数或条件语句或其他表示一个范围的语句中使用

常量的使用

  • 直接使用名字
  • 使用constant()函数:constant(“常量名”);

常量和变量的区别

  • 定义形式不同:
  • 使用形式不同:常量无需$符号
  • 可变程度不同:常量的值不需要改变,常量也不可以销毁
  • 作用范围不同:常量具有超全局作用域(函数内外都可直接使用)
  • 可用类型不同:常量只能存储标量类型:int,float,string,bool

判断常量是否存在:defined()

判断的结果为bool值

常用形式:if(defined(某常量名)){....定义该常量}

实际可以这样:$result=defined(常量名);      //结果是true或者false

使用一个未定义的常量(特殊情况):

使用一个未定义的常量会报一个错误(notice错误)--跟使用一个未定义的变量一样,但是,php会得到这样一种结果:似乎常量存在,常量的内容就是常量名:

预定义常量

php语言中预定了大量的常量可直接使用

某些常量需要打开某些模块(mysql模块)

魔术常量

一种值会随着一定的条件(环境)而变化的常量,形式上是常量,但实际上其值会改变

比如:__DIR__(当前网页文件所在目录),__FILE__(当前网页文件),__LINE__(当前行号)(两个下划线)

魔术常量类似为变量,在不同位置的值不同

结果为:

  • 如M_PI(圆周率),PHP_OS(操作系统),PHP_VERSION(php版本号),PHP_INI_MAX(php中最大整数值)
  • 参考手册>附录>保留字列表>预定义常量

猜你喜欢

转载自blog.csdn.net/su_yi_song/article/details/86768187
今日推荐