php常见知识点

什么是PHP

    HTMLHyperText Mark-up Language

    超文本标记语言

    PHPPHPHypertext Preprocessor)超文本预处理器,是一种运行在服务器端的脚本语言,尤其适合web开发。

PHP能干什么?

    收集表单数据

    生产动态网页

    收发cookies

    跨平台运行

    输出图像

    文件处理

    处理XML格式的数据

    处理JSON格式的数据

    回话跟踪。。。

    服务端脚本,用于写web网页(主攻)CGI命名行脚本,CLI编写桌面应用程序

 

PHP的特点

    跨平台运行

    开源免费

        http://www.github.com

    支持大多数的web服务器

    支持很多范围的数据库

php的发展史

    1995年由LerdorfPHP之父)发明

    1998PHP3发布

    2000PHP4发布,开始引入面向对象的思想(半成品)

    2004PHP5发布,完全的支持面向对象思想

        5.4或者56最稳定

    2015123号直接发布了PHP7,速度翻了一倍

第一个PHP文件

    1.环境装好之后,进入到网站根目录(www,如果不是wampserver,有可能是htdoc

    2.新建的文件后缀一定是.php,文件名不能是中文的

    3.PHP代码:phpinfo();

    4.在浏览器中访问文件:http:localhost:80/demo.php

html中嵌套PHP代码:

    1.文件后缀必须是php

    2.可以嵌套到任何地方:body中、head之外、属性中、css

    3.PHP代码必须被<?php ?>所包裹

 

PHP的标记

    1.标准风格(常用)

        <?php php代码 ?>

    2.长风格

        <script language="php">php代码</script>

    3.短风格

        <? php代码 ?>

        需要在php.ini中开启short_open_tag(将它设置为on,默认为off)

    4.asp风格

        <% php代码 %>

        需要在php.ini中开始asp_tag(讲它设置为on,默认为off)

    5.<?= echo的简写(常用)

        <?='123';?>相当于<?php echo '123';?>

    注意:PSR规范中,只允许使用<?php ?><?= ?>这两种,如果是纯php文件,标准风格的结束标记可以不写

 

指令分隔符

    PHP中语句分为两种

        1.结构定于语句

            流程控制、分支、循环、函数、、用大括号标识,可以不加分号

        2.功能执行语句

            输出、变量定义、函数调用。。。后面必须加上分号

    提示:php的结束标记中隐含了一个分号,最后一条语句可以不加分号

PHP中的注释

    注释掉的代码,PHP都会忽略解析

    1.//单行注释

        //注释内容。。。

    2.多行注释

        /*

            注释内容

        */

    3.#单行注释

        #注释内容。。

PHP中对空白符的处理

    php会忽略空格、换行、tab制表符的解析,所以可以利用这个特点写出可读性比较高的代码

    要求:php代码必须要按照严格的缩进;psr规范规定,缩进只能4个空格(引文tab制表符的宽度,编辑器解析不一样,不利于代码的移植)

 

变量

    什么是变量?

        变量是用于临时存储的容器

        值可以是数字、文本或者其他一些比较复杂数据(数组、对象)

    变量的特性

        php是弱类型的语言,不必告知变量的类型是什么,它会根据存储的值来决定这个变量是什么类型的

    变量的命名规范:

        1.必须以$开始,后面跟变量名

        2.变量名由字母、数字或者下划线_组合而成

        3.不能以数字开头

        4.严格区分大小写

        5.可以是中文,强烈不推荐

    可变变量

        一个变量的变量名可以动态的设置和使用

        如果:$str = 'name';

        那么:$$str 相当于 $name;

    变量的赋值

        1、值传递

            相当于将变量啊的值传递过去,这两个变量之间没有如何关系

        2、引用传递

            相当于给变量a取了个别名,这两个变量其实就是同一个,修改任何一个,另外一个也会被修改

            $b=&$a;

    跟变量相关的操作

        1var_dump() 打印变量(照妖镜)可以查看变量的类型和值,常用于调试

        2unset()删除变量

        3isset()检测变量是否设置

            已设置,返回true,未设置返回true

        4empty()检测变量是否为空

            不空,返回false,空的,返回true

 

php中的数据类型

有八大数据类型

    4种标量类型

        boolean     布尔型

        Integet|int 整形

        float       浮点型

        string      字符型类型

    2种复合类型

        array   数组类型

        object  对象类型

    2种特殊类型

        resource    资源类型

        null        空类型

null类型

    只有1个值,就是null本身

 

得到null的情况:

    1、直接赋值为null

    2、没有赋值的变量,默认也是null

    3、被unset()删除的变量

 

boolean|bool    布尔型

    只有两个值,要么是true,要么是false

    通常用于if判断,其他类型转换为布尔型得到false的情况:

        布尔型:    false

        字符串:    ''或者'0'

        整型:      0

        浮点型         0.0

        数组:     空数组(array()

        null:       null(包括未定义的变量)

    其他所有的值都为true

整型int:所有的整数

计算机中的存储单位:

    位:      bit

    字节:    Byte         1B = 8b

    千字节:  KB           1KB = 1024B

    兆字节:  MB           1MB = 1024KB

    千兆:    GB           1GB = 1024MB

    太字节:  TB           1TB = 1024GB

              PB           1PB = 1024TB

              EB           1EB = 1024PB

              。。。

2PHP中的int类型占4个字节

    PHP_INT_SIZE//

    常量,代表PHP中的int类型所占的字长

34个字节占32位,最高是符号位,所以php的取值范围是231次方

    echo pow2,31);

4PHPint的最大取值范围:PHP_INT_MAX;

        范围是:-2147483647~2147483647

        提示:超出int的取值范围,会自动转换为float浮点型

    人类常用的是十进制,而计算机使用的是二进制

    十进制:0-9 格式:$a =10;

    二进制:0-1 $a=0b10;

 

    八进制:0-7     $a=0x10;

    十六进制:0-9 a-f    $0x10;

    var_dump($a);

    echo PHP_INT_SIZE;

    10进制转为二进制:decbin($num);

    10进制转为八进制:decoct($num);

    10进制转为16进制:dechex($num);

5.浮点型

    就是有小数点的数

    1、浮点数的最大范围,超出浮点数的取值范围,会得到一个INF

    INFinfinity的简写,表示无限大的意思

    2、浮点型的运行不精确

    3、经浮点型数取整的函数

        round();

    4、舍去取整 

        floor();

    5、进一取整

        ceil();

6、字符串类型

    由一串串字符组成的东西就叫字符串

    字符串的定义方式

        1、单引号 ''

        2、双引号 ""

        3heredoc定界符 <<<SB SB;

        4nowdoc方式定义的字符串 <<<'ABC' ABC;

 

单双引号的区别

    1.单引号不能解析变量,双引号可以解析

        注意:双引号里面的变量要求用{}包裹起来

    2、单引号不能解析转义字符,双引号可以解析

    3、都可以互相嵌套,不能自己嵌套自己

转义字符

    \r 回车

    \n 换行

    \t 制表符

    \\ 斜线本身

heredocnowdoc

    heredoc可以解析变量和转义字符

    nowdoc不能解析变量和转义字符

PHP中的类型转换

    强制转换

        bool/boolean)强制转换为布尔型

        int/(integet) 强制转换为整型

        float 强制转换为浮点型

        unset 强制转换为null类型

        string)强制转换为字符串类型

        array)强制转换为数组类型

        object)强制转换为对象类型

    注意:强制转换为null类型,要用(unset);无法强制转换为资源类型

 

    自动转换

        布尔值环境

        数值环境

        字符串环境

    布尔值环境:

        通常是在做if判断的时候if0),写在()里面的表达式。都是会被自动转换为布尔型,进行判断

    数值环境:

        +法运行

        比较常见的就是字符串转换:是由开始部分决定,如果开始部分是一个标准的数值,转换出来的值就是该数值,否则为0

    字符串环境:

        $res = '大声道'.true/false;

数据类型的判断:

    $res = is_string($data);

    $res = is_bool($data);

    $res = is_int($data);

    $res = is_float($data);

    $res = is_array($data);

    $res = is_object($data);

    $res = is_null($data);

    $res = is_resource($data);

    

    is_scalar()

        判断是否是标量

    is_numeric()判断是否是数字或者数字字符串

    获取数据类型

        gettype($data)

    设置数据类型(相当于强制转换)

        settype($data, 'string')

    除了is_string()返回true,其他都是返回false

常量:

    一经定义,不能修改或者删除

常量的定义:

    define

        define(常量名,常量值)

    常量名:

        和变量一样,只能数字、字母或者下划线

        不能以数字开头(可以定义,不能使用)

        区分大小写(但是,define的第三个参数设置为true可以不区分大小写)

        建议:常量名全都是大写

    常量值:

        define

            php7可以定义数组

            可以是资源,但不推荐

            8大类型里面只是object不能是常量值

        const

            8大类型里面,不能是资源和对象

const定义常量:

    const 常量名 = '常量值'

    输出一个没有定义的常量的时候,会报一个notice错误,并且将常量名自动转换为字符串输出

检测常量是否定义:

    defined'常量名';

    get_defined_constants() 返回当前所以(包括预定义常量)已经被定义的常量

预定义常量:

    PHP_INT_MAX;

    PHP_INT_MIN;

    PHP_INT_SIZE;

    PHP_INT_VERSION..

魔术常量:

    __LINE__    返回当前行

    __FILE__ 返回当前文件路径

    __DIR__     返回当前目录路径   

    __CLASS__

    __METHOD__

    __NAMESPACE__

    ......

运算符:

    运算符是可以通过给出的一个或者多个值(表达式)来产生另一个值的东西

    3种数据类型

        一元运算符

            只能接受一个值与运输的叫一元运算符

            - ++ --

        二元运算符

            算数运算符 + - * / ....

        三元运算符

            ?:  

    算数运算符

        + - * /

        % 取余或者求模运算

    递增递减运算

        ++

            $i++ 后加加

            先输入$i;然后再将$i+1;下次再使用$i的时候,就加完1之后的值

            ++$i 前加加

            先将$i的值加1,然后再给你输出加完1之后的值

赋值运算符:  

    =

        将右边的表达式的值赋给左边的东西

    +=

        $i += 5; //相当于把$i = $i + 5;$i加上5之后再赋值给$i

    -=  *=  /=

 

PHP5.6之后,默认的字符集就是在utf-8,在5.6之前需要手动设置字符编码:

    HTML

        <meta charset="utf-8" />

        <meta http-equiv="content-type" content="texthtml;charset=utf-8" />    

         PHP

        header('content-type:text/html;charset=utf-8');

字符串运算符

    .   将左右两边的字符进行拼接运算

    .=  将右边的字符追加到左边的字符后面

 

比较运算符:

    >       表示大于

    <       表示小于

    >=      大于等于

    <=      小于等于

    ==      等于

    ===     恒等于

    !=  |  <> 不等于

    !==     不恒等于

 

逻辑运算符

    逻辑与 && and

        只有两边为true,结果才为true

    逻辑或 || or

        只要有任何一边为true,结果就是true

        注意:前面为true,后面就不在执行,俗称短路

    逻辑非

        就是取反的意思

        $bool = true

        !$bool相当于 false

    逻辑异或

        两边不一样才返回true,否则返回false

位运算符

    按位与     &

    按位或     |

    按位异或     ^

    左移      <<

    左移      >>

    按位非     ~//会涉及到补码的问题

        补码 = 反码 + 1

    用底层二进制进行操作,效率非常高

 

    按位与:

    10  --  1010

    3   --  0011

    ------------------

              0010  -  2

    按位或:

        10  --  1010

        3   --  0011

        ------------------

                  1011  - 11

    按位异或:

        10  --  1010

        3   --  0011

        ------------------

                  1001  --> 9

    左移 <<

        10  --  1010

        ---------------------

               1010000

    左移 <<

        10  --  1010

        ---------------------

                     1

        

        向任何方向移出去的位都被丢弃

其他运算符:

    ?: 三元运算符号(常用)

        表达式1 ? 表达式2 : 表达式3

        1为真的时候,执行2,否则执行3

    @错误控制符

    `` 执行运算符,可以执行一些操作系统的命令

            print_r(`dir`);

            print_r(`ipconfig`);

   => 数组下标指定符号

     -> 对象成员访问符号

     instanceof 类型运算符

流程控制

    1.概述

        任何 php 脚本都是由一系列语句构成,可以用花括号将一组语句封装成一个语句组

    2.php中有3种基本的程序结构:

        顺序结构

        分支结构

        循环结构

顺序结构

    表示程序从上往下执行

分支结构

    1.单向分支

        if (表达式为true){

            执行真区间

            }

    2.双向分支

        if (true) {

            表达式为true执行真区间

            }else {

            表达式为false执行这个假区间

            }

    3.多向分支

        if (表达式1) {

            如果表达式1为真,就是执行这里,到这里后,整个分支就结束;为假就继续往后判断

            }else {

            所以表达式都为假,就执行else区间

            }

    4.巢状分支

if分支的特点

    1.所有的条件表达式都会被转换为布尔值

    2.if语句后面没有{}包裹的时候,之后执行一句php语句

    3.else if 中间可以加1个或者多个空格

1 '' '0' 0 0.0 空数组 nullfalse

巢状分支(就是if嵌套)

 

if...elseif

 

switch...case语句,多向分支

    switch (表达式){

        case 1

            语句。。。

            break

        case 2

            语句2

            break;

        default

            都匹配不上的时候,执行这里

        }

 

        会取出括号里面的值,与case的值逐一比较。如果结果为true,则执行该case的语句;否则,继续往下case;都找不到的时候,执行default的语句

switch...case的坑

    会取出括号里面的值,与case的值逐一比较(用==来判断)

    $cj = 1;

    switch (true) { true == false  95 == true  85 == false

    case ($cj >= 90):   

        echo '';

        break;

    case ($cj >= 80):   

        echo '略屌';

        break;

    case ($cj >= 60):   

        echo '一般';

        break;

    default:

        echo '混合';

    }

循环结构

    whiledo-whilefor

while循环

    while(表达式){

        循环体;

    }

    当表达式的值为true的时候,会反复执行循环体,直到表达式为false的时候,停止循环

do-while循环

    do {    

    循环体

    } while(表达式);

    程序会先执行一遍do里面的循环体,再去看表达式是否为真

    真,就再执行do里面的循环体;

    假,循环立马结束;

    继续执行后续代码

for循环

    for(初始化语句;条件判断语句;每次循环后执行语句){

        循环体

        }

    初始化语句:在整个循环开始之前,无条件的执行1次,并且它只执行1

    条件判断语句:在每次循环开始之前都会判断,为true就执行循环体,为false就终止循环

    每次循环后执行的语句:每单次循环完毕都会执行

特性的流程控制语句:

    break   跳出整个循环

    continue

    跳出本次循环,继续下一次循环exit或者die 结束脚本执行;

        die;

        exit;

        die();

        exit();

        die('结束时输出的字符串');

        exit('结束时输出字符串');

流程控制的替代语法:

    替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;endwhile;endfor; 以及 endswitch

do-while 只有一种语法,没有替代语法

 

函数是什么?

    函数(function)完成它指定任务的代码块,可以遵照你给它的参数完成指定的任务,也可以有返回值。

php中函数分为两类:

    1、自定义函数

    2、系统函数

        var_dump()time()等等

自定义函数

    1、格式

        function 函数名([参数列表])

        {

            函数体;

            由一条或者多条语句组成

        {

    2、函数名的命名规则

        数字、字母或者下划线组成;

        不能以数字开始;

        不能是关键字或者保留字;

            PHP手册 -> 附录 -> 关键词列表

        不能与已经存在的函数(包括系统函数)重名

    3、函数的调用

        1.函数名不区分大小写

        2.函数调用不分先后

        3.可以重复调用

函数的参数

    形参

        定义函数时写的参数就是形参

        形参可以有默认值,默认值不能是变量

        有默认值的形参应该写在后面(右边)

        不然形同虚设

    实参

        调用函数时传的参数叫实参

        实参的传递,与形参的位置一一对应;个数最后是一样的,不能少(形参没有默认值的时候),可以多(但是没有必要)

 

 

函数的返回值:return

    没有return的函数,默认返回null

    return语句会立即终止函数的执行,函数的后续代码不执行

检测函数是否定于:

    function_exists()

    不存在时,返回false

    当一个函数是有条件被定义时,其定义必须在调用之前先处理,不然无法调用、报错。

 

变量的作用域 

    全局变量

        1、在函数外部定义的变量叫全局变量

           PHP中,函数被看做一个独立的功能个体,无法直接访问全局变量

        2、非要在函数内部访问全局变量

            1.global关键字将变量声明为全局的

            2.通过超全局数组$GLOBALS['变量名']取下标的方式访问

    局部变量

        1、在函数内部定义的变量,该变量仅在当前函数的作用域内有效,函数调用完毕,立即释放

        2、非要在全局范围访问函数内部定义的变量:

            1.global关键字声明为全局变量

            2.return直接将变量返回出去(常用的方式)

        3.形参也是局部变量

    静态变量:

        用关键词static声明静态变量

        特性:静态变量只会声明1次,不会重复声明

        无法在全局范围访问函数内部的静态变量

        在全局范围内定义静态变量,没有声明意义

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值