php中的变量
php中的变量有两种形式:自定义变量和预定义变量;
普通变量:
1:命名:
1:由数字字母下划线组成,数字不能开头;
2:多用于小写,多用下划线分隔式命名法命名;
3:前面必须带有$
符号;
4:变量名是区分大小写的,所以大小写要分明;
5:一定要有一定的释义性,不能随意简写;
2:其他:
1:php为弱数据类型语言,因此变量无需声明数据类型;
2:变量无需先声明后使用,但是推荐先声明后使用,保持良好的变量使用习惯;
3:同一个变量前后可以引用不同数据类型数据;
4:$$name:可变变量;变量名称可变;一般用于处理名称有规律的数据非常有效;
3:对变量的一些基本操作:
isset($name)
:检测变量是否存在以及是否有值;
unset($name)
:删除变量对数据的引用;
$name1 = $name2
:直接赋值;
$name1 = &$name2
:引用赋值;
gettype($name)
:获取变量的数据类型;
is_XXX()
:进行具体类型判断;
(目标数据类型)$name
:进行数据类型转换;但是不会转换数据本身数据类型;
settype(目标数据类型,$name)
:设置变量的数据类型,会对变量本身进行数据类型转换;
系统全局数组变量:(预定义变量)
1:对于预定义变量:
1:所有的预定义变量均是数组;
2:所有的预定义变量作用范围是全站;
3:所有的预定义变量只能取值,或给其内容复制,绝对不能直接赋具体值;
2:内容:
1:$_get
1:用于数据的传递;是HTTP协议的一部分;
2:$_get
:通过将需要传递的数据追加至URL后面组成新的URL地址传递数据;
3:接收方式:$_GET["data_name"]
;
4:传递方式:
<form action = "" method = "get"><form>
//通过表单传递数据;
<a href="url?name = value&name = value"></a>
//通过链接传递数据
//在js里面可以通过以下两种方式传递数据
window.location.href = "url?name=value&name=value"
window.location.assign("url?name=value&name=value")
5:特征:
1:数据有长度限制;因为url本身是有长度限制的;
2:不适合传递密文信息;因为get传值会直接将值附加在URL后面,比较显眼;
3:不可以上传文件
4:一般多用于获取数据;
6:作用域全站;
2:$_post
:
1:用于数据的传递,用于传递数据;
2:接收数据方式:$_POST["data_name"]
;
3:发送数据方式:
<form action ="" method="POST" encyType="">
4:特征:
1:可以上传文件;
2:数据量可以设置,且较大;
3:可以对数据加密上传;
4:数据传递较为含蓄;
5:作用域全站;
附:get和post传递数据方式的区别:
公共点:
1:都用于向服务器页面传递数据;
不同点:
1:http协议对get/post传递数据的多少是没有限制的;
而所谓get方式有长度限制;是因为处于对服务器端安全和性能的保护加的限制;
post上传数据的大小限制同样是为了服务器安全和性能的保护而加的限制;这种限制来自三个方面:
1:表单本身设置隐藏域限制大小;
2:在php的配置文件中限制上传文件的大小;
3:在php配置文件中限制上传表单的大小;
2:get上传数据会一查询字符串的方式将数据附加在url后面,出现在地址栏里面,略透明;
post上传数据会将数据直接打包在body里面,不会显示在地址栏里面,因此略隐秘;
但是对于提交数据的安全性而言并无任何区别()post完全可以通过截包工具截获;而对于内容的安全性而言反而get应该更安全;
3:get不能上传文件,并且会缓存,且有记录
post可以上传文件,不会缓存,无记录;
4:get向服务器只会发送一次包;而post则会发送两次包;
5:想要更安全可以使用https协议
3:$_request
:
1:全局数组变量,用于接收上传服务器的数据;
2:get/post/session/cookie均可用request接收,但此时数据引用名称不能重名;
3:本质是全局数组,作用域是全站;
4:接收方式:$_REQUEST["data_name"]
;
4:$GLOBALS
:
1:全局数组变量,作用类似request;
2:主要作用:将全局变量包装为超全局变量;
3:两种方式:
1:$GLOBALS["data_name"]
;
此种方式可以在函数内部使用函数外部的变量,在函数内部对函数外部的变量做了修改将会保持;因为引用确确实实是外部所声明的变量;
2:global $name
此种方式可以在函数内部声明函数外部的同名变量;则可以使用外部同名变量的值;但是此时所做的修改将不会保持;因为此种方式只是声明了一个指向外部变量的引用;因此并不会改变外部变量真正的值,本质上来说并不是同一个变量;
5:$_SERVER
:
1:可以获取和本站以及客户端相关的信息;
常量
1:基本特征:
无作用域限制;
常量名多用大写(小写也可,不推荐);
存储区域在静态存储区域;
尽量少自定义常量;多使用系统常量;
2:定义:
define(常量名,常量值);
const 常量名 = 常量值
3:区别:
define:
1:默认区分大小写;第三个参数为true则区分大小写,为false则不区分大小写;
2:常量名可为表达式
3:常量值可为表达式
4:不区分命名空间
5:不能再类中使用该方式定义常量
const:
1:默认区分大小写,无法更改;
2:常量名不可为表达式,只能使用普通的确定的名称;
3:可识别命名空间
4:应在类中使用,可定义类常量;
对default的测试:
对const的测试:
4:系统常量:
FILE:代表常量所在文件的名称;
LINE:代表常量所在文件的行号;
DIR:代表常量所在文件的目录;
5:检测常量是否已经定义:defined(常量名);
输出
php中提供了以下四种最基本的输出方式:
echo:
1:输出语句;而非函数,可以输出变量,常量,表达式的值;无返回值;效率较高,比print稍快;
<?php
$name = "nextli";
$age = 23;
echo $name,$age;
//结果是nextli123
print:
1:只能输出一个变量,有返回值,始终返回1;
2:同样print是语句不是函数;
<?php
$name = "nextli";
$age = 23;
print $name;
//结果是nextli;
print $name,$age;
//结果将会报错;
上述两种只能输出基本数据类型,对于引用型数据则无能为了力;
print_r():
1:输出函数;打印变量详细信息;
2:如果是基本数据类型则直接输出变量值;如果是array,将会打印其键值详细信息;
3:print_r()会将指针移至最后,使用reset可将指针回到开始处;
var_dump():
1:输出函数;打印变量的详细信息;
2:基本类型将会打印其数据类型和具体值:(数据类型)数据;
3:数组合对象将会打印其结构信息;