php基础语法

一,语法环境

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,  myNamemyFatherName

帕斯卡命名法:

示例:Name,  MyNameMyFatherName

下划线间隔法:

示例:name,  my_amemy_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>
View Code

点击提交后,将用户填写的信息发送给aa.php页面,其实就是打开网页aa.php

形式二:

<a href="aa.php?user=zhangsan&password=123">跳转</a>
View Code

点击跳转后,将数据提交给aa.php页面

形式三:利用location对象的方法assign()

<script>
    location.assign("aa.php?user=zhangsan&password=123");
</script>
View Code

当该语句执行时,将数据发送给页面aa.php

形式四:利用location对象的属性href

<script>
    location.href="aa.php?user=zhangsan&password=123";
</script>
View Code

$_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>
View Code

$_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>
View Code

此时,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)//布尔值当下标,则true1false0

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);
?>
View Code

输出结果就是:

 七,函数

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;

原文地址:https://www.cnblogs.com/wfc139/p/8982871.html