一,语法环境
1,标准形式(常用)
<?php
这里是php代码
?>
2,标准形式
<script language="php">
这里是php代码
<script>
3,短标签形式(不常用)此形式要更改php.ini里的设置:short_open_tag = on
<?
这里是php代码
?>
说明:当一个php代码后面不再有其他非php代码(通常是html),此时php代码的最后结束标记(?>)可以省略
二,基本语法形式
1,变量名区分大小写(自己定义变量时都小写就可以)
常量通常是大写
2,php的语句结束符号是分号,不能省略
三,变量
1,变量含义:包含了一个名称和一个值的“标识符”
2,形式:以$开头,后面紧跟变量名;注意:只要出现$符号,其后面紧挨着的字符都会被识别为一个变量,即使不存在该变量
3,变量的基本使用
php中只要定义变量就必须给其赋值 $name=\'李四\';
判断变量是否存在 isset() 存在就返回true 不存在就返回false 例如:$num1=1; if(isset($num1)){echo "存在";}
修改变量值(赋值):第二次及以后给一个变量赋值,就算是改变变量的值 例如:$num1=1; $num1=2; 在$num1=1;之后,$num1=2;之前变量值就是1,在$num1=2;之后的变量值就是2了
删除变量 unset():就是断开变量名跟数据之间的“引用关系”
4,命名规则
只能用大小写字母,下划线,数字,字母开头,不能跟所在环境的关键词重名
驼峰命名法:
示例:name, myName, myFatherName
帕斯卡命名法:
示例:Name, MyName, MyFatherName
下划线间隔法:
示例:name, my_ame, my_father_name
5,变量间的传值方式
值传递:将一个变量的值赋给另一个变量
例如:$num1=1;
$num2=$num1;
引用传值:将一个函数的引用关系拷贝一份,然后赋给另一个变量,即另一个变量也同样由该关系决定了指向某个数据
6,可变变量:一个变量的名又是一个变量 例如:$v=1; echo $$v; 其中$$v就是可变变量
7,预定义变量,又叫超全局变量 超全局变量都是数组
包括:$_GET,$_POST,$_REQUEST,$_SESSION,$_SERVER,$_GLOBALS,$_COOKIE
$_GET变量:用来提交数据
形式一:
<form action="aa.php" method="get"> <input type="text" name="user"/> <input type="text" name="password"/> <input type="submit" value="提交"/> </form>
点击提交后,将用户填写的信息发送给aa.php页面,其实就是打开网页aa.php
形式二:
<a href="aa.php?user=zhangsan&password=123">跳转</a>
点击跳转后,将数据提交给aa.php页面
形式三:利用location对象的方法assign()
<script> location.assign("aa.php?user=zhangsan&password=123"); </script>
当该语句执行时,将数据发送给页面aa.php
形式四:利用location对象的属性href
<script> location.href="aa.php?user=zhangsan&password=123"; </script>
$_POST变量
类似$_GET,通常只有一种形式
<form action="aa.php?a=5&b=6" method="post"> <input type="text" name="zhangsan"/> <input type="password" name="123"/> <input type="submit" value="提交"/> </form>
$_REQUEST变量:是$_POST数据和$_GET数据的总和
$_REQUEST数组中包含了$_POST数据和$_GET数据-——其实是由系统内部自动存储的
get和post同时提交的情形
<form action="aa.php?a=5&b=6" method="post"> <input type="text" name="zhangsan"/> <input type="password" name="123"/> <input type="submit" value="提交"/> </form>
此时,a=5和b=6是以get的方式提交的,zhangsan和123 是以post方式提交的
在页面aa.php中:取get数据:$v1=$_GET[\'a\'];
$v2=$_GET[\'b\'];
取post数据:$v3=$_POST[\'user\'];
$v4=$_POST[\'123\'];
也可以这样取:$v1=$_REQUEST[\'a\'];
$v2=$_REQUEST[\'b\'];
$v3=$_REQUEST[\'zhangsan\'];
$v4=$_REQUEST[\'123\'];
当get数据和post数据同时提交并其中有重名时,$_REQUEST只会存储一个数据(get数据或post数据),至于存储那个数据是由php.ini里面的request_order="GP";来决定的 GP代表先存储get数据再存储post数据,且post数据会将get数据覆盖,PG刚好相反
$_SERVER变量
该变量存储了服务器端或客户端的一些请求信息或设置信息,比较多,而且不同的服务器和不同的请求页面,其数据项都可能不同。
REMOTE_ADDR, 用户的IP地址
SERVER_ADDR: 服务器端的IP地址
SERVER_NAME: 服务器名(主机名)
DOCUMENT_ROOT: 站点绝对路径(其实就是主机设置中的DocumentRoot
PHP_SELF:当前网页的文件路径
$_GLOBALS变量
他只是把我们自定义的所有全局变量存储到该数组中,变量名就是该数组的下标,变量值就是对应的值
四,常量
含义:用于存储一个不会变化也不希望变化的标识符
1,定义形式
使用define()函数定义
define("常量名",常量值);
使用const语法定义
const 常量名=常量值
const语法只能在最顶层的代码中使用,不能在大括号中
2,使用方法
直接使用名字
使用constant(“常量名”)函数
常量变量的区别:
定义形式不同
使用形式不同:常量无需$符号
可变程度不同:常量的值不可以改变,常量也不可以销毁
作用范围不同:常量具有超全局作用域 (函数内外都可以直接使用)
可用类型不同:常量只能存储标量类型:int,float,string,bool
3,预定义常量
比如圆周率M_PI
php版本PHP_VERSION
执行php的操作系统名称PHP_OS
最大整形数PHP_INT_MAX
最近的警告处E_WARNING
最近的错误处E_ERROR
4,魔术常量
值会随着一定条件变化的常量
比如:__DIR__:当前网页文件所在目录
__FILE__:当前网页文件
__LINE__:当前这一行
五,运算符
1,算数运算符
+ * - / % ++ --
其中取余运算符%,先取整,再取余 例如:$v=7.5%3; 结果是1
前++:先完成变量的递增运算,再取得该变量的值参与别的运算。
后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算
2,比较运算符
> < >= <= == === !==
==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相同”
===:严格相等,全等,只有两个数据的类型和数据的内容都完全一致,才相等。
3,逻辑运算符
&&与 ||或
4,条件(三木)运算符
$score = 66;
$result 1= $score >= 60 ? “及格” : “不及格”; //结果是“及格” 说明:当$score大于等于60时,就是及格,否则不及格
5,字符串运算符
. 将运算符两边的数据转化为字符串,实际可以理解为字符串拼接
6,赋值运算符
=
六,数组
PHP中,数组的下标可以是整数,也可以是字符串
1,定义:$arr = array(元素1,元素2,。。。);
array(1, 5, 1.1, “abc”, true, false); //可以存储任何数据,此时为“默认下标”,
array(2=>1, 5=>5, 3=>1.1, 7=>“abc”, 0=>true);//下标可以任意设定(无需顺序,无需连续)
array(2=>1, 5, 1=>1.1, “abc”, 0=>true)//可以加下标,也可以不加(默认下标),下标分别是:2,3,1,4,0
//默认下标规则:前面已经用过的最大数字下标+1
array(2=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true)//混合下标,同样遵循默认下标规则
array(-2=>1, ‘dd’=>5, 1.1, “abc”, true); //负数下标不算在整数下标中,而只当作字符下标
//则最后3项的下标是:0, 1, 2
array(2.7=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true);//浮点数下标为自动转换为整数,且直接抹掉小数
array(“2.7” =>1, ‘dd’=>5, “11”=>1.1, “abc”, true)//纯数字字符串下标,当作数字看待,
//则此时下标为:2, ‘dd’, 11, 12, 13
array(2=>1, ‘dd’=>5, true=>1.1, “abc”, false=>true)//布尔值当下标,则true为1,false为0;
array(2=>1, ‘dd’=>5, 2=>1.1, “abc”, true)//如果下标跟前面的重复,则单纯覆盖前面同名下标的值
2,数组的分类
从键值关系分为:
关联数组:通常下标是字符串,并且从该字符串大体可以表达出数据含义的数组
索引数组:通常是一个数组的下标严格的从0开始的连续的数字下标
从数组层次来分:一维数组 二维数组 多维数组
数组遍历:
基本语法:foreach($arr as [$key]=>$value){} 其中$key可省略,他代表键;$value代表值
交换原理:
此时的$a=4;$b=3;
冒泡排序:
<?php //定义一个数组 $arr = array(1,5,4,8,6,9,2); //定义数组的长度 $length_arr = count($arr); for($i=0;$i<$length_arr-1;++$i){ for($k=0;$k<$length_arr-1-$i;++$k){ if($arr[$k]>$arr[$k+1]){ $a=$arr[$k]; $arr[$k]=$arr[$k+1]; $arr[$k+1]=$a; } } } var_dump($arr); ?>
输出结果就是:
七,函数
1,函数的定义形式
function 函数名(形参1,形参2,.。。。){
//函数体(代码)
}
2,函数的调用形式:本质上就是使用一个名字来达到执行其中函数中代码的作用
通常分为两种情形的调用:
第一种:没有返回值的函数,调用语句是独立语句:
函数名(实参1,实参2,。。。);//实参个数应该跟形参有匹配性。
第二种:又返回值的函数,调用语句通常会混杂在别的语句中,并将该调用的语句当作一个数据来使用
例如:$a=函数名(); //赋值给其他变量
$a=函数名()*3+6; //参与运算
echo 函数名(); //直接输出
3,函数的调用流程
开始调用:实参传给形参
程序执行流程进入到函数中
按照常规的程序逻辑执行函数中的代码
如果遇到return语句,则终止函数的执行,跳回函数开始的位置
如果执行到函数的最后位置,也同样跳回函数开始的位置
4,函数参数的问题
形参:
形参一定是个变量
该变量名只能在函数的内部有效,而且只在函数调用并执行时有效,函数结束,通常这些变量也会销毁
实参:实参就是一个实际数据
该数据可以是一个直接数据,也可以是一个变量中存储的数据
实参的作用是将其数据赋值给形参
实参跟形参通常是一一对应的关系
默认值参数:定义一个函数时,在形参的位置,可以给形参设定默认值 例如:function($r,$PI=3.14){$result = $PI*$r*$r;return
$result;} 此时$PI=3.14就是一个默认值参数
注意:默认值不能是对象或资源类型,他只能是常量表达式,或常量,不能是变量
参数的数量:
函数的参数可以是0个或多个,通常情况下实参数量应该和形参数量一致,但是当形参中有默认值时,实参的对应项可以省略
自由参数数量:
函数定义时可以不给形参,但调用时,却又可以给定任何个数的实参,这种应用的实现,是2依赖与系统中的三个系统函数来达到的:
func_get_args(); //获得一个函数所接收到的所有实参数据,结果是一个数组
func_get_arg(); //获得一个函数所接收到的第n个实参数据
func_num_args(); //获得一个函数所接收到的所有实参数据的个数
5,函数的返回值
通常来说,一个函数中,使用return语句,其后面带一个数据(直接数据,变量数据,表达式结果数据),则函数就会返回该数据到调用的位置
通常情况下,函数的返回数据都是以值传递的形式返回:函数中变量的值拷贝一份,返回给接受位置的相应代码,但也可以让函数中的变量数据的值,以引用传递的方式返回:
定义函数:function &函数名(形参1,形参2,。。。){}
6,匿名函数:就是没有名字的函数
形式1:$f1 = function(){};
形式2:调用其它函数2(匿名函数,实参1,实参2,。。。); 常见的形式就是call_user_func_array(匿名函数,数组);含义:将数组的每一项当作该匿名函数的若干个实参,传递到该匿名函数中,并执行该匿名函数,并可以从该匿名函数中返回数据。
八,变量的作用域
局部作用域:只能在所定义的函数范围内使用
全局作用域:在函数的外部使用
超全局变量:在函数的内部和外部都可以使用 预定义的变量都是超全局变量
静态局部作用域:在函数内部局部使用,但是数据在函数退出后不会丢失 例如上面的static $a=1;
请发表评论