php基础语法 学习笔记

一、格式

1、标准格式(xml格式)

php基础语法 学习笔记

注:如果一个文件里只有php代码,结束符'?>'可以不写,并建议不写。如果写了结束符"?>"后多了几个换行符,在其他文件加载该文件的时候会把换行符也加载进去。

php基础语法 学习笔记

2、script格式

php基础语法 学习笔记

3、短格式

php基础语法 学习笔记

4、asp格式

注:短格式和asp格式需要修改php.ini 文件来开启(默认为关闭)

php基础语法 学习笔记

注释

1、单行注释

//注释内容

2、多行注释

/*多行

 注释*/

示例:

php基础语法 学习笔记

二、变量及操作

程序就是对内存进行操作(对内存进行读写操作)

1、声明

语法:

        $变量名=值;

说明:

        php中的变量必须以"$"开头

        变量名只能包含字母、数字、下划线、只能以字母、下划线

php基础语法 学习笔记

2、修改变量的值

php基础语法 学习笔记

3、删除变量

语法:

        unset($变量名)

示例:

php基础语法 学习笔记

4、可变变量

示例1:

php基础语法 学习笔记

运行结果:

php基础语法 学习笔记

作用:通过一个变量访问另一个变量

示例2:

php基础语法 学习笔记

运行结果:

php基础语法 学习笔记

作用:通过一个变量创建另一个变量

三、预定义变量

PHP为我们预先定义了一组变量,这些变量会在不同的需求中使用。

$_GET                用于接收前台表单使用get方式提交的数据

$_POST              用于接收前台表单使用post方式提交的数据

$_REQUEST      用于接收前台表单使用get或post方式提交的数据

$_SERVER        包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组,要熟,可阅读

                           博客(https://www.cnblogs.com/rendd/p/6182918.html)

$_COOKIE

$_SESSION

$_FILES

$GLOBAL           在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以

                           在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。比如变量$a1,写法为 $GLOBALS['a1'].课参考博

                           客(https://www.cnblogs.com/Strive-count/p/6155066.html)

四、内存原理

1、内存结构

栈区:

        保存的是变量名(引用)。

        特点:对于CPU来说,读写的速度是最快的。

堆区:

        存储"复杂"的数据,数组、对象。

数据段:

        存储的是"简单"的数据,例如:整型、浮点型、布尔值。

代码段:

        存储的是源代码对应的机器指令。

输出缓存:

        输出指令例如:echo、print、print_r、var_dump,这些指令都会将要输出的数据放在输出缓存中。

2、php执行过程

编译阶段

        进行语法检查、词法检查、代码优化。

        编译通过之后将源代码转换为机器指令。

执行阶段

       如过编译通过后,会将源代码对应的机器指令,保存在代码段,再开始执行代码段中的机器指令

示例:

php基础语法 学习笔记

执行过程中在内存的变化:

    (1)、编译阶段

        (1.1)、语法检查、词法检查、代码优化,通过后在大妈段中生成机器指令。

     (2)、执行阶段

        (2.1)、执行代码段中的代码

        (2.2)、执行$v1=10,会在栈区开辟一个空间存储变量$v1,将数据保存到数据段的全局区,再将数据的物理地址赋值给栈区的变量$v1.

        (2.3)、执行$v2=$v1;在栈区开辟一个空间存储变量$v2,读取变量$v1的值,读取出来

保存在数据段全局区,将这个数据的地址赋值给栈区的变量$v2.

        (2.4)、执行$v2=20,找到栈区的$v2,并根据地址找到数据段全局区对于的空间,将数据覆盖保存。

      (2.5)、执行echo $v1;找到栈区中的变量$v1,根据地址找到数据段全局区中的空间,将空间中的值读取出来。并把数据10放到输出缓存中

     (3)、程序执行结束,输出缓存中的数据会自动返回apache,apache返回给浏览器,同时会将栈区中的内容清空。同时数据段中的数据也会被系统销毁,代码段中的数据会销毁

3、php嵌入2到HTMl的执行过程

      当php功能模块在处理一个php文件时,它只关心php代码(使用PHP标签包含的代码)‘对于非PHP代码,它会原样输出

 

4、php中变量的传值方式

     1、赋值传值

           使用一个变量a为另一个变量b赋值时,传递的是变量a的值,这中赋值方式就是赋值传值。

php基础语法 学习笔记

     2、引用传值

          使用一个变量a为另一个变量b赋值时,传递的是变量a的地址,这中赋值方式就是引用传值。

php基础语法 学习笔记

提示:

        js中不允许人为的更改传值方式,但是PHP中可以使用取地址符’&‘,来将赋值传值更改为引用传值

五、常量

       1、概念

             常量就是一种特殊的变量,也是用于存储数据。常量一旦定义就不允许 修改其值,常量本身也不允许删除【unset()】;

        2、定义

             (1)、语法 1:

                     define('常量名',值);

php基础语法 学习笔记

             (2)、语法 2:

                     const  常量名=值;

php基础语法 学习笔记

            说明:

                    常量一旦定义就不允许更改

                    常量的值只能是基本数据类型(标量数据类型)

                    常量默认区分大小写,一般常量名在命名时,采用全大写的形式

           (3)、define    VS   const

                   define 语法可以在分支结构(if...else)中定义常量,const不允许;

                   define定义的常量可以自定义是否区分大小写;格式 define('常量名',数值,Boolean),true不区分大小写,

                   false 区分大小写。

       3、常量的判断及获取所有的常量

           (1)、判断常量是否存在

                  defined('常量名')

           (2)、获取php中所有常量

                  get_defined_constants();

php基础语法 学习笔记

      4、魔术常量

           __FILE__  用于获取当前文件名完整路径及文件名

           __DIR__   用于获取当前文件的路径

           __LINE__  用于获取当前行号

           __FUNCTION__ 用于获取当前函数的函数名

           __METHOD__ 用户获取当前方法的方法名

           __CLASS__  用于当前类的类名

           __NAMESPACE__ 用于获取当前空间的空间名

六、PHP的数据类型

     1、数据类型的分类

         (1)、标量数据类型

              int   整型

              float   浮点类型

              boolean  布尔类型

              string  字符串

         (2)、复合数据类型

              array  数组

              object  对象

         (3)、特殊数据类型

             null   null

             resource  资源类型

    2、整数(Int)类型

        线性的整数

        (1)、十进制

              $v = 255

        (2)、八进制

              以0开头,并不能有超过7的数字

        (3)、十六进制

              以0x开头、包含0-9,a-f

php基础语法 学习笔记

php基础语法 学习笔记

     3、浮点(float)类型

         (1)、表示方式-普通

             $v1 = 3.5;

         (2)、表示方式-科学计数法

             $v2 = 1.23E-9;

         注:不要轻易的对浮点数进行比较

     4、字符串(string)类型

         (1)、使用单引号定义的字符串

              能够被转义的字符有  \\ \'

              单引号定义的字符串的变量不能解析其值;

         (2)、使用双引号定义的字符串

              能够被转义的字符有  \' \" \t \r \n \\ \$ ...

              双引号定义的字符串的变量的值可以被解析;

         (3)、heredoc

              也是用于定义字符串的,主要应用场景是定义大段的字符串。

        语法:

              $herdoc = <<<开始标记

              大段的文本

             结束标记;

        注:开始标记与结束标记必须相同,且结束标记必须顶格书写;

php基础语法 学习笔记

          转义符:\

           \' ,\" ,\t ,\r ,\n ,\\ ,\$ ...

示例:

php基础语法 学习笔记

php基础语法 学习笔记

注:

    如果要输出变量的值后还有其他内容,会报错

php基础语法 学习笔记

php基础语法 学习笔记

可采用范围解析限定符{}

php基础语法 学习笔记

php基础语法 学习笔记

或将字符串分开在进行连接

php基础语法 学习笔记

    5、布尔(Boolean)类型

         只有两个值:true 、false;

    6、数组(Array)类型

         (1)、索引数组

              数组元素的下标是数值

         (2)、关联数组

             数组元素的下标是字符串

             数组原属的访问:

             索引数组   数组名[int];

             关联数组   数组名['name'];

       注:

            如果在一个字符串中想要输出数组的元素,那么下标不需加引号

            如果使用范围解析限定符{},那么下标必须加引号

php基础语法 学习笔记

    7、null类型

        只有一个值-null;

    8、资源(resource)类型

        一个特殊的变量,程序员无法直接定义一个资源,必须使用PHP提供的获取资源的函数

七、数据类型的转换

     当参与运算的两个数据,类型不同时,php会自动进行转换。

     有时也人为的进行强制转换

    1、自动转换

php基础语法 学习笔记

php基础语法 学习笔记

        按学习视频中这里应该不会出现警告而直接输出10000;

         错误:A non well formed numeric value encountered(遇到非格式良好的数值)

         原因:这种现象常常出现在弱类型语言上!时间戳并不是真正的int类型, 这种问题经常出现在从数据库中提取出数据,但是数据不是int类型的,可能是varchar等等。

         解决方法:

                使用 intval() 函数将不匹配的数据类型转换成int数据类型即可

     2、强制类型转换

         主要了解其他数据类型转换为布尔值的情况。

         {

          当其他类型转换为 boolean类型 时,以下值被认为是FALSE:

          布尔值 FALSE

          整型值 0(零)

          浮点型值 0.0(零)

          空白字符串字符串"0"

          没有成员变量的数组

          特殊类型 NULL(包括尚未设定的变量)

          所有其它值都被认为是 TRUE(包括任何资源)。

   }

八、数据及类型的判断

       判断函数的格式

       常用

       is_int(v);

       is_string(v);

       is_bool(v);

       is_float(v);

       is_scalar(v); 判断变量v类型是否为标量(int、string、bool、float);

       is_array(v);

       is_object(v);

       is_resource(v);

       is_null(v);

       isset(v);  判断变量是否有设置值;(判断变量的值是否为null值)

       empty(v);  用于判断变量v的值是否为"空",此处的空表示只要等效于布尔false的值都被

       empty认为是空,如果是空返回true,否则返回false