php1.0

作者: 微笑你的天下 | 来源:发表于2019-03-31 23:26 被阅读0次

    1.0 php 服务器脚本语言,适合开发web,实现功能,开源免费,可执行在各种平台支持所有的数据库

    2.0 php是用来写动态网站的。

    3.0 3wHp

    what :学习的是什么东西

    why:为什么要学习它

    when:学完之后什么时候用

    how:怎么用,灵活运用

    practice:实践,实践,实践

    4.0 如果文档中只有php代码就不需要结束的标记

    如果有其他代码一定要有结束标记

    标准语法<?php ?>

    5.0 语法规范每一行都要用; 结束

    6.0 parse error 语法错误

    7.0 单行注释// 

    多行注释/**/

    跟js是一样的,并且在源代码中看不到的

    8.0 php的工作原理

    8.5 在浏览器打开一个url都发生了什么?

    1.0 发送了一个请求

    1.2 dns服务器,将域名转换为ip地址,找到相应的服务器。

    2.0 httpresponse相应一个结果,如果请求存在,和不存在,不存在就给你一个不存在的结果

    3.0 根据你的请求类型,如果apache服务器能处理的了,就通过http的response返回给浏览器,如果处理不了,比如php文件,那接下里就交给php引擎处理,处理之后再通过http  response响应给浏览器,

    4.0 如果有数据库,php引擎就要去操作数据库

    9.0 php中的变量

    声明变量 $+名称 

    $age = 15;

    可以声明再使用也可以不声明,以字母下划线开始,不能包含特殊字符。驼峰命名法

    php严格区分大小写,

    变量重名的话,后面的会覆盖掉前面的

    undefined valiable (未定义的变量)

    10.0 等量代换

    $a = 'b';

    $b = 'c';

    $c = '123';

    echo $$$a;//123

    11.0 var_dump()

    打印变量的详细信息,可以传一个,也可以传多个,用,(逗号)隔开就行

    12.0 php中的数据类型

        12.1 8中主要数据类型

                3种伪类型

    12.2 主要数据类型又分为

    标准类型:1.0 整形(int|integer)

    10进制 8进制等都行

    范围-21亿到21亿之间,超过的话就溢出

    2.0 浮点型(float,double,real)

    可以用科学计数法

    不要比较两个浮点数的大小,有误差

    $a = 2e3;//2乘以10的3次方

    $b = 2E-2;//2乘以10的-2次方

    var_dump($a,$b);// float(2000) float(0.02)

    3.0 布尔型(bool | boolean) 

    真或假 true和false

    4.0 字符串

    4.1 单引号 不解析 变量

    4.2 双引号 解析变量

    4.3 ‘’// 空字符串

    转义字符有\n 换行

    \r 回车

    \t 水平制表符

    \\   \ 

    \$   $

    \'    '

    \"     "

    单引号直解析\\  \'

    echo ''后面加,(逗号)就可以输出多个字符串

    4.5 花括号{}

    4.51将变量阔成一个整体

    如:$name = "123"

    echo "我是{$name}按时付款计划"

    或者 "我${name}阿斯蒂芬快疯了"

    4.52 可以对字符串中指定的字符做增删改查的操作

    $var = "abc"

    $var{0} = "1"

    $var // 1bc

    就是根据下标做操作跟js类似

    $a = 2e3;//2乘以10的3次方

    $b = 2E-2;//2乘以10的-2次方

    // heredoc相当于双引号

    $str = <<<edo

            <h1>{$b}<h1>

        </div>

    edo;

    echo $str;

    echo '<br/>';

    // nowdoc 不能解析变量

    $sta = <<<'WER'

    <div>

    <h1>{$a}</h1>

    </div>

    WER;

    echo $sta;

    复合类型1.0 数组

    $arr =array();//空数组

    $arr = array(12,'king',true);

    var_dump($arr);

    2.0 对象

    $obj = new stdClass();

    var_dump($obj);//object(stdClass)

    特殊类型1.0 资源

    //资源

    $a = fopen('./test2.php','r');

    var_dump($a);//resource(3) of type (stream)

    2.0 空 null 或者NULL

    2.1变量未声明直接使用

    2.2变量直接赋值为null

    var_dump($a);

    echo '<hr/>';

    $b = null;

    var_dump($b);

    echo '<hr/>';

    unset($b);

    var_dump($b);

    2.3unset()销毁的变量

    12.... 5中伪类型

    mixed

    number

    callback

    void

    $...

    13.0 如果php中代码有中文

    // 告诉浏览器以什么编码方式解析什么文档类型,防止中文乱码

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

    14.0 

    // 设置错误级别,E_ALL但是除了NOTICE

    error_reporting(E_ALL&~E_NOTICE);

    15.0 php中的数据类型转换

    15.1 自动转换(隐式转换)

    //其他类型转成数值型

    echo 1+2,'<br/>';//3

    echo 1+2.2,'<br/>';//3.2

    echo 1+true,'<br/>';//true->1

    echo 1+false,'<br/>';//false->0

    echo 1+null,'<br/>';//null->0

    echo 1+'3king','<br/>';//3king->3

    echo 1+'45asdf','<br/>';//->45

    echo 1+'2e2asd','<br/>';//2e2->200

    echo 1+'true','<br/>';//'true'->0

    //其他类型转换为字符串

    echo 1,'<br/>';//1

    echo 1.2,'<br/>';//

    echo true,'<br/>';//1

    echo false,'<br/>';//''空字符串

    echo null,'<br/>';//''

    $arr = Array();

    echo $arr;//Array

    //Catchable fatal error: Object of class stdClass could not be converted to string

    // 致命错误,对象不能直接转换成字符串,程序会终止

    $obj =new StdClass();

    echo $obj;

    // 其他类型转换为boolean类型,主要在条件语句中

    $var = 0;//0->false

    $var = 0.0;//0.0->false

    $var = '';//->false

    $var = '0';//->false

    $var = null;//null->false

    $var = array();//空数组->false

    $var = '0.0';//->true

    15.2 强制转换(显示转换)

    临时转化:

    方法1(类型)变量名称

    注意 浮点型转换成整型是舍掉的意思

        1.0 整型 (int)$age (integer)$age

        2.0 浮点型(float|double|real)

        3.0 字符型(string)

        4.0 布尔型(boolean)

        5.0 空(unset)

        6.0 数组(array)

        7.0 对象(object)

    方法2 通过系统函数实现

        1.0 整型 intval($var)

        2.0 doubleval() floatval() realval()

        3.0 strval()

        4.0 booleanval()

    永久转换:

    setType($var,$type)

    $var = '123'

    setType($var,'int')

    bool,float,string,array,object,null

    对应的有getType($var) 获取变量类型(不建议使用)

    我们一般通过变量函数库检测类型 is_*

        只返回真或者假

        is_int($var)

        is_boolean($var)

        1.0 整型 is_int() is_integer() is_long()

        2.0 浮点型 is_float() is_double() is_real()

        3.0 字符串 is_string()

        3.5 布尔类型 is_bool()

        4.0 标量类型 is_scalar() 

        标量: 整型,浮点型,字符串,布尔类型都是

        5.0 空null is_null()

        6.0 数组    is_array()

        7.0 对象 is_object()

        8.0 资源 is_resource()

        9.0 是否为数值型或者字符串形式的数值 is_numeric()

    16.0  常量

    常量是一个简单的标识符,一经定义不能修改

    分类16.1 系统常量

    PHP_VERSION PHP版本

    PHP_OS php运行环境

    PHP_INT_MAX 整型最大值

    16.2 自定义的常量

    define()函数定义

    一般要用大写的

    define(‘NAME‘,'123')

    NAME ==123

    前面不要加$

    define定义的时候不要加$

    常量区分大小写,是全局的

    另外一种就是 const  AGE = "18";

    根据常量的名字获取常量的值,

    constant()

    echo constant('AGE')

    检测常量名称是否存在,返回true ,,false

    defined('AGE')

    获取定义的所有常量 ,自定的加系统的

    get_defined_constants()

    $var = [1,2,3];

    print_r($var);

    print_r() 打印数组的信息

    16.3 魔术常量 

    __LINE__

    以两个下划线开始且以两个下划线结束,中间都是大写

    总共有8个

        1.0 __LINE__

    得到当前的行数

    2.0 __FILE__

    得到当前文件的完整绝对路径和文件名

    3.0 __DIR__

    得到文件的绝对完整路径

    4.0 __FUNCTION__

    得到当前的函数名称

    5.0 __CLASS__

    得到当前类的名称

    6.0 __METHOD__

    得到当前类的方法名称

    7.0 __TRAIT__

    得到当前的TRAIT名称

    8.0 __NAMESPACE__

    得到当前命名空间

    17.0 php 中的预定义变量

    // 接收表单以post形式发送过来的数据

    $_POST['名称'] 

    1.0$GLOBAL  超全局变量,包含下面所有的预定义变量

    2.0 $_SERVERS 服务器和执行环境信息变量

    3.0 $_ENV 环境变量

    4.0 $_COOKIE http cookie

    5.0 $_SESSION http seccion变量

    6.0 $_FILES 文件上传信息变量

    7.0 $_GET http get变量

    8.0$_POS http post 变量

    9.0$_REQUEST  $_GET+$_POST+$_COOKIE

    18.0php 中的表达式和运算符

    只要是有值得东西都是表达式

    18.1 算数运算符

    +-*/ % 取余

    -3 % -8 后面的负号没作用所以结果是 -3

    php7中新增的运算符

    2**3  // 8 2的3次方  幂运算符

    18.2 递增递减运算符

    ++-- 前缀和后缀

    $i=5

    echo $i++ //5

    echo $i //6

    布尔类型不支持递增和递减

    null 支持 递增,不支持递减

    字符串支持递增,也不支持递减

    $str = 'a';

    echo ++$str// b

    $str = 'b';

    echo ++$str// c

    ++z  //aa

    ord()函数可以获取到对应的ascii码值

    多个字符串,比如“king”

    只会获取第一个k的值,ord() chr()都一样

    chr() 根据ascii获取对应的值

    ASCII

    18.3 字符链接运算符 点.

    $str1 = 'hello';

    $str2 = "world";

    $str = $str1.$str2;

    echo $str // hello world

    echo 'a'.'b';

    18.4 赋值运算符

    =

    += $a+=1  $a = $a+1

    -=

    *= $a*=3 $a = $a*3

    /=

    %=

    点等于.= $a .= 'kk' $a = $a.'kk'

    18.5 比较运算符

    <>  != 都是不等于

    (太空船运算符<=>)

    var_dump(3<=>1,3<=>3,3<=>5); 

    // 1 0 -1 

    3比1大返回1

    3跟3相等返回0

    3比5小返回-1

    null 检测符

    var_dump(0??$b??$c)

    输出从左到右部位null的值,如果都为null 则返回null

    第一个是0 就返回0 ,第二个是1,第一个是null 就返回第二个

    18.6 逻辑运算符

    结果也是boolean类型

    $a and $b // $a&&$b

    $a or $b // $a||$b

    !$a

    $a xor $b 逻辑异或 就是$a 和$b 不能同时为true 就返回true

    18.7 错误抑制符

    在前面加@符号就行啦

    $var = 123

    @settype($var,'king');

    @var_dump($sddfe)

    test() // 这种致命的错误是不行的

    echo @(3/0);// 返回INF 表示无穷大

    三元运算符

    a? b : c

    a为真执行b 否则 执行c

    另外的 a? :c

    如果a为真返回a

    a为假返回c

    优先级

    用()改变优先级,还有短路的情况

    19.0  流程控制语句

    分支语句:if

    循环语句:for

    判断奇偶数

    取余 =1 就是奇数 

    =0就是偶数

    判断是闰年

    1.0能被4整除,不能被100整除的是闰年

    2.0能被400整除的也是闰年

    取很多数中的最大值和最小值

    max($a,$b,$c)

    min($a,$b,$c)

    switch(exp){

        case 值1:

        代码段;

        break;

     case 值1:

     代码段;

        break;

    default:

    代码段;

    }

    20.0  日期

    /*

    * Y:4位的年份 * m:2位月份 * d:2位的日 * H:2为的小时 * i:2位的分钟 * s:2位的秒 * w:返回一周内的第几天0~6

    *

    * */

    echo date("Y年m月d日 H:i:s");

    echo date("Y-m-d" ,time());

    echo date_default_timezone_get();// utc

    //设置中国标准时间

    date_default_timezone_set('PRC');

    碰到 exit或者是die() ,程序终止执行

    exit('asdasdasd');

    21.0 循环语句有

    for

    while

    do...while

    continue 跳出当前循环,进行下面的循环

    php7里面的

    // goto 跳转到指定位置,不能跳入循环 函数和类 但可以跳出循环

    echo "w";

    echo "<br/>";

    goto TEST;

    echo "22";

    TEST:

    echo "33";

    22.0  自定义函数

    作用:可读性,复用性

    书(代码简洁之道)

    函数体里面的动态变量,是局部变量,不能在函数体外面使用

    如果是静态变量你看一下

    function test(){

        static $a = 3;

        $a++;

    echo $a;

    }

    test() //4

    test()//5

    全局变量

    $a = 3;

    $b = 4;

    function test(){

        echo $a;

    }

    test()// 会报错,需要先引用一下

    function test(){

        global $a;

    echo $a;

    }

    test()

    值传递和引用传递区别在&

    $a = 3;

    function test(&$c){

        $c = 5

    }

    change($a)

    echo $a//5

    如果是new 出来的stdClass() 

    那就 不用这符号,因为他是在堆内存中,属于直接引用,,

    像整型,浮点型,普通变量是属于在栈内存中的。

    23.0 参数的默认值

    function test($a=3,$b=5){}

    24.0  可变参数列表

    获取传递了几个参数

        func_num_args()

        获取参数

        func_get_args();

    例子:模仿var_dump

        我们只做是整型和字符串的,其他的类型没写

        function var_dump2(){

        if(func_num_args()<=0){

            return;

        }

    $params = func_get_args();

    foreach($params as $param){

        if(is_int($param)){

        echo 'int('.$apram.')';

     }

        if(is_string($apram)){

        echo 'string('.strlen($param).')' '..$param';

    }

    }

    }

    25.0 函数参数的类型,定义

    // 三种array,对象,callable

    function test(array $a){

    }

    // 注意回调函数

    function test(callable $a){

    $a();

    }

    function call(){}

    test('hello world') // 注意这里要传字符串

    26.0 可变函数

    function test(){}

    $func = 'test';

    $func()

    // 一般会搭配检测,函数是否存在

    如:

    if(is_callable($func)){}

    if(function_exists($func)){}

    27.0 函数嵌套,

    函数都是全局作用域

    function test(){

        function te(){}

    }

    要想调用te()

    必须先调用test()

    所以 

    function foo(){

        $a = 1;

        function ff(){

        echo $a;// 报错,不能调用的

    }

    }

    28.0 递归的调用

    function sum($n,$m){

        if($m<=$n){

            return $n;

        }

    return sum($n,$m-1)+$m

    }

    // 1,1,2,3,5,8

    function fb($n){

        if($n<=2){

        return 1;

    }

    return fb($n-1) +fb($n-2);

    }

    echo fb(8) //6

    30.0 匿名函数

    $a = function ($b){

        echo $b;

    }

    $a('123')

    例子 :

    $mes = '111'

    $a = function($b){

        echo $mes; 

    echo $b;

    }

    $a('123')

    // 上面的$mes 是打印不出来的,要声明一下

    $a = function($b){

    global $mes;

    echo $mes;

    echo $b;

    }

    如果嵌套在函数里面用到use关键字

    function test(){

        $mes = '111';

        $a = function($b) use ($mes){

            echo $mes;

            echo $b;

        };

        $a('123');

    }

    test();

    另外一种形式

    function test(){

        $mes = '111';

        $a = function($b) use ($mes){  //$a = function($b,$mes) {这种方法是不行的

            echo $mes;

            echo $b;

        };

        return $a;

    }

    $func = test();

    $func('123');

    31.0 冒泡排序

    count() 计算数组的长度

    check() 可以检查数组中 数组改变的次数

    32.0 汉罗塔问题,

    3根柱子, 放到其他柱子里面,注意大的圆盘不能压在小的圆盘上面,

    所以就是,把第一个放在第二个柱子,把第二个放在第三个柱子,然后把第一个圆盘再放在第三个柱子,然后把第三个放在第二个柱子

    function test($n){

        if($n<=1){

            return $n;

        }

        return 2*test($n-1)+1;

    }

    var_dump(test(2),test(3),test(4));

    33.0  函数库基础

    函数(function) 是实现特定功能的,可以重复执行的代码。

    34.0 

    // 获取字符串长度

    $a = '';

    $b = '132';

    echo strlen($a);//0

    echo strlen($b);//3

    一个汉字是3个字节mbstring()

    35.0 

    // 字符串大小写的转换

    $a = 'sads';

    $b = 'SDFGDFDF';

    echo strtoupper($a);//0

    echo '<br/>';

    echo strtolower($b);//3

    echo '<br/>';

    // 句子首字母转换为大写

    $c = 'asdasd';

    echo ucfirst($c);

    // 每个单词的字母转化为大写

    $d = "hello world ni haowo";

    echo ucwords($d);

    // 替换,这两个是全部替换的 str_replace ,区分大小写 str_ireplace,不区分大小写

    $a = 'javascript';

    echo str_replace('a','b',$a);//jbvbscript

    echo str_ireplace('R','W',$a);//javascWipt

    htmlspecialchars函数 

    预定义的字符转换为HTML实体

    ENT_COMPAT  默认,仅编码双引号

    ENT_QUOTES 编码双引号和单引号

    ENT_NOQUOTES 不编码任何引号

    $a = 'A>B,B>c,sjdhgf&sdjhfg,"wyefjh",\'i\'m no\'';

    echo $a;

    echo '<br/>';

    echo htmlspecialchars($a,ENT_QUOTES);

    36.0 

    // 删除空格或其他字符 都可以接受第二个参数ltrim rtrim trim

    //ltrim() 删除前面的

    // rtrim 删除后面的

    // trim 删除所有的

    // 如果不加第二个参数,默认删除 \0 制表符 \r 空格 \n 垂直制表符

    $str = "\n\n\t\tacd\t\t";

    echo ltrim($str); // acd 

    37.0 

    // 字符串位置的获取

    // strpos 区分大小写,某个字符在字符串中第一个出现的位置

    // stripos 不区分大小写,两个如果没找到,返回false

    // strrpos  区分大小写 最后一次出现的位置

    // strripos  不区分大小写,最后一次出现的位置

    $str = "javascript";

    echo strpos($str,'a');//1

    echo strpos($str,'ww');//false

    38.0  substr 函数,实现字符串的截取,三个参数

    str start length  第二个参数是起始位置,后面的是长度

    $str = 'javascript';

    echo substr($str,0,4);//java

    echo substr($str,4);//script

    echo substr($str,-2);//pt

    echo substr($str,-5,-2);//scr

    // strstr 搜索一个字符串在另一个字符串中第一次出现的位置,并截取,区分大小写

    // stristr 同上,不区分大小写

    $str = 'javascript';

    $str1 = 'a';

    echo strstr($str,$str1);//avascript

    38.0 字符串的反转 strrev

    $a = 'abc';

    echo strrev($a)// cba

    39.0 字符串加密操作 md5()// 长度 32 不可逆

    40.0 打乱字符串 str_shuffle // 如产生验证码 每次值都不一样

    41.0  explode函数 字符串的分割操作,分割的内容是数组 

    $str = 'javascript';

    $str1 = 'a';

    print_r(explode($str1,$str));//Array ( [0] => j [1] => v [2] => script )

    42.0  implode  数组的合并 

    $str = array('1','2','3');

    echo implode($str);//123

    echo implode('|',$str);//1|2|3

    43.0 

    // 格式化字符串

    // sprintf函数

    // 说明%符号多余arg参数,则必须使用占位符,占位符位于%符号之后,由数字和"\$"组成

    $num = 5;

    $str = "shanghai";

    // 把第一个arg个第一个参数 把第2个arg个第2个参数

    $txt = sprintf('wo shj %u in sdh %s',$num,$str);

    echo $txt; wo shj 5 in sdh shanghai

    //格式化字符串  $format ,规定字符串以及如何格式化其中的变量,可能的取值

    //%% 返回一个百分号%          %b 二进制

    // %d 包含正负号的10进制数    %e 使用小写的科学计数法

    // %s 字符串                %f 浮点数

    $txt = sprintf('wo shj %b in sdh %s',$num,$str);

    echo $txt;     wo shj 101 in sdh shanghai

    $txt = sprintf('wo shj %d in sdh %s',$num,$str);

    echo $txt;   wo shj 5 in sdh shanghai

    $txt = sprintf('wo shj %.2f in sdh %s',$num,$str);

    echo $txt;    wo shj 5.00 in sdh shanghai

    $txt = sprintf('wo shj %.5f in sdh %s',$num,$str);

    echo $txt;   wo shj 5.00000 in sdh shanghai

    // 参数多的情况

    $number = 123;

    $txt = sprintf("带两位小数:%1\$.2f不带小数:%1\$u",$number);

    echo $txt;  带两位小数:123.00不带小数:123

    $txt = sprintf("wo shj %1\$s in sdh %1\$s",$num);

    // 注意里面一定要是"" 双引号,双引号

    echo $txt;   wo shj 5 in sdh 5

    php 数学函数库

    44.0 floor 函数和ceil()函数

    floor 舍1取整 

    ceil 进1取整

    $a = 2.1;

    echo floor($a);//2

    echo ceil($a);//3

    $a = 2.6;

    echo floor($a);//2

    echo ceil($a);//3

    45.0 幂运算

    2的3次方

    echo pow(2,3)

    47.0 平方根的运算 sqrt函数

    echo sqrt(4) // 2

    echo sqrt(3) // 1.73205

    48.0 最大值,最小值

    max() min() 至少需要2个以上参数

    49.0 随机数的获取

    rand函数

    mt_rand()函数  它将产生一个更好的随机数 // 算法好,性能好

    echo rand(50,80);

    echo '<br/>';

    echo mt_rand(50,80);

    注意会出现50 或者80 

    50.0 round函数 四舍五入的操作

    $a = 1.738;

    echo round($a);//2

    echo '<br/>';

    echo round($a,2);//1.74

    51.0 数字格式化

    number_format函数

    两个参数,第二个参数保留到几位

    并且进行了四舍五入计算

    $a = 14578.738;

    echo number_format($a);//14,579

    echo '<br/>';

    echo number_format($a,2);//14,578,74

    52.0 浮点数余数

    fmod()

    echo fmod(7.8,3) // 1.8

    echo 7.8%3 //1 整数的余数操作

    53.0 格式化日期

    第二个是可选参数,时间戳

    53.0

    54.0 修改时区的方法

    1.0 date_default_timezone_set('PRC');

    2.0 通过php.ini文件 找到date.timezone (需要重启服务器)

    55.0 时间戳Unix时间戳,就是从1940年1月1日0时0分0秒到现在的总秒数

    56.0 获取现在的时间戳 time()方法

    echo time()

    86400 就是一天的毫秒数

    57.0 microtime() 获取时间戳,会带上微秒数

    里面加bool类型,不加的话,微秒在前面

    加的话在后面 (作用:可以计算程序所花费的时间)

    例子:

    echo microtime();//0.03091100 1553918332

    echo '<br/>';

    echo microtime(true);//1553918332.0309

    58.0 获取时间戳的转换,比如3个星期之前或者之后,等

    strtotime()

    例子:

    // 获取上一个月的日期,有坑

    echo date('Y-m-d H:i:s',strtotime('-1 month'));// 不对因为他是已30天为一个单位的

    echo date('Y-m-d H:i:s',strtotime('last day of -1 month'));// first day of 第一天

    59.0 生成唯一ID

    uniqid函数

    echo uniqid();

    echo '<br/>';

    echo uniqid('mooc');

    echo '<br/>';

    echo uniqid(microtime());

    echo '<br/>';

    echo uniqid(microtime() . mt_rand());

    echo '<br/>';

    echo md5(uniqid(microtime() . mt_rand()));//这个就是我们常用的生成唯一id的常用的

    // uuid 8-4-4-12 32位的

    60.0 

    var_dump(getdate());// 获取日期信息

    61.0 php中的数组

    数组是一个有序映射,是复合类型

    索引数组,,下标为数字

    关联数组:下标为字符

    $arr = array();//空数组

    // 通过gettype()得到变量类型

    echo gettype($arr);

    // 通过is_array()检测是不是数组

    echo '<br/>';

    echo is_array($arr);//1

    var_dump(is_array($arr));//true

    // 指定下标的数组

    $arr = array(3=>'a','5'=>147);

    var_dump($arr);

    // 定义关联数组

    $arr = array('username'=>'zl','age'=>147);

    true=>'45',//1 下标转为1

    false=>4, //0 下标转为0

    null=>we);// '' 空字符串

    // 如果下标重复,后面的会替换掉前面的

    // 创建多维数组

    $arr = array(

        array(a,b,c),

        array(d,e,f)

    );

    // 二维关联数组

    $arr = array(

      'user'=>array('zl','xm','iw'),

        'age'=>array(14,25,5)

    );

    // 通过【】创建数组

    $arr = [

        ['id'=>1,'name'=>'xl'],

        'text'=>['a',1,2],

    ];

    // 动态创建 下标连续的索引数组

    $arr[] = '1';

    $arr[] = 145.2;

    $arr[] = '145';

    // 手动指定下标的索引数组

    $arr1[3] = 14

    $arr1[-15] = 46

    $arr1['we'] = 65

    // 多维的 

    $arr[][]

    // 通过range()和compact()快速创建数组

    $a = range(5,10); // 下标从0开始,值从5开始

    $b = range(1,10,2);// 值从1开始,每次加2,步长的意思

    chr() 把值转为ascii吗值

    // 通过compact 创建数组的时候,只能写已经存在的变量的名称,不需要加$

    $a = 12;

    $b = 45;

    $c = null;

    $d = compact(a,b,c);// compact('a','b','c')

    // define() 定义常量数组

    // 5.6 之后可以用const定义 常量的名字一般要大写

    const ARR2 = ['a'=>'aa',b=>'bb'];

    define('ARR1',array(1,2,3));

    define('ARR3',[1,4,5]);

    echo '<br/>';

    var_dump(ARR1);

    echo '<br/>';

    var_dump(ARR2);

    61.0 数组的使用 ,通过键名找键值

    $arr = ['a','b'];

    $arr[] = 'c';

    $arr['test'] = ['1',2];

    $arr[0] = 12;

    // 删除某个元素 unset;

    unset($arr[1])// 删除下标是1的元素

    // 针对二维数组的操作

    $arr[] = ['id'=>1,'name'=>2,'desc'=>'wowowo'];

    $arr[] = ['id'=>2,'name'=>2,'desc'=>'wowowo'];

    $arr[] = ['id'=>3,'name'=>2,'desc'=>'wowowo'];

    var_dump($arr);

    $arr[0]['name'] = "xixixixxixi";

    echo $arr[0]['name'] ;

    // 删除

    unset($arr[0]['name']);

    // 将其他类型转换成数组

    // 临时转换

    $var = 123;

    $var = 12.3;

    $var = true;

    $var =null;// 转换为空数组

    // 永久转换settype($var,$type);

    settype($var,'array');

    62.0 

    // 数组运算符 +,==,===,!=, <>,!==  != 和<> 都是不等于的意思

    //+合并数组

    $arr1 = [1,2,3];

    $arr2 = ['a','b'];

    $arr3 = $arr1+$arr2;

    print_r($arr3);// [1,2,3] 如果键名相同只是用 左边的

    $arr4 = ['a','b','c','d'];

    $arr3 = $arr1+$arr4;

    print_r($arr3);//[1,2,3,'d']

    // == 比较键名和键值是否相同,相同返回true,否则返回false

    // === 键名和键值是否相同,并且顺序也要相同

    62.0 数组的遍历

    1.0 foreach遍历数组

    2.0 通过数组指针函数遍历数组

    3.0 each()和list()函数遍历

    $arr= range('a','g');

    // count()得到数组中元素的个数

    echo count($arr);

    // 如果是null的话,返回的是0

    $var = null;

    echo count($var);//0

    // 两种形式

        foreach ($arr as $value){

            echo $value;

            echo '<hr/>';

        }

    foreach ($arr as $key=>$value){

        echo $key.'--'.$value;

        echo '<hr/>';

    }

    foreach 只能遍历数组和对象

    //7.0 的一些新变化

    /*

    *1.0 可以通过:endforeach 代替{}

    *2.0 操作的值是数组的副本 * 3.0 通过引用遍历时,有更好的迭代特性 * 按照引用进行循环的时候,对数组的修改会影响循环* */

    $ww = [1,2,3];

    foreach ($ww as $w):

        echo $w;//123

    endforeach;

    $arr=['a'];

    foreach ($arr as &$v){

        echo $v; // a,b

        $arr[1] = 'b';

    }

    2.0  

    /*

    * key($array):得到当前指针所在位置的键名  如果不存在返回null

    * current($array):得到当前指针所在位置的键值  如果不存在返回false

    * next($array):将数组指针指向下移动一位,并返回当前指针所在位置的键值,,如果没有,返回false

    * prev($array):将数组指针指向上移动一位,并返回当前指针所在位置的键值,,如果没有,返回false

    *reset($array):移动到数组开始,并返回当前指针所在位置的键值,如果没有,返回false

    * end($array):移动到数组末尾,并返回当前指针所在位置的键值,如果没有,返回false

    */

    $arr = [

      'a','b','c',

      34=>'test',

      'age'=>12

    ];

    echo '键名:',key($arr),'<br/>';

    echo '键值:',current($arr),'<br/>';

    echo next($arr),'</br>';

    echo '键名:',key($arr),'<br/>';

    echo '键值:',current($arr),'<br/>';

    echo next($arr),'</br>';

    /*

    * 键名:0

    键值:a

    b

    键名:1

    键值:b

    c

    * */

    数组指针相关函数

    list() // 将下标连续的索引数组赋值给相应的变量

    each()//

    $arr = [1,2,3]

    list(,$a,$b) = $arr

    $a = 2 $b =3

    $a = [

    [1,2,3]

    [1,3,4]

    [1,4,5]

    ]

    forearch($a as list($name,$age,$many)){

        //  类似于 $val = list($name,$age,$many

    }

    // each($arr) 得到当前指针位置的键值对,返回的是数组,4个部分,并且指针向下移动一位

    $arr = [

        'a'=>'aaa',

        'b'=>'bbb',

        'c',

        'name'=>'w',

        33=>'ddd'

    ];

    //$res = each($arr);

    //var_dump($res);

    //list($k,$v) = each($arr);

    //echo $k,'--',$v,'
    ';

    //list($k,$v) = each($arr);

    //echo $k,'--',$v,'
    ';

    while(list($k,$v) = each($arr)){

        echo $k,'--',$v,'<br/>';

    }

    a--aaa

    b--bbb

    0--c

    name--w

    33--ddd

    数组相关api

    1.0 创建数组操作

    2.0 键值相关操作

    3.0 数组指针相关操作

    4.0 数组拆分与合并相关操作

    5.0 数组交集与差集相关操作

    6.0 数组排序相关操作

    63.0 cookie的一些内容

    1.0 什么是cookie

    http cookie(也叫web cookie或者浏览器cookie)是服务器发送到用户浏览器并保存在浏览器上的数据,它会在浏览器下一次发起请求时被携带并发送到服务器上,http cookie是http标头的组成部分。

    session 是在服务器端的。

    2.0 cookie的作用是什么?

    2.1 回话状态管理(如用户登录状态,购物车)

    2.2 个性化设置(如用户自定义设置)

    2.3 浏览器行为跟踪(跟踪分析用户行为)

    3.0 与cookie相关的函数

    setcookie('username','tom',time()+10*86400,'/','*/jd.com');

    // 10天内有效

    /* tv.jd.com

    spo.jd.com

     wes.jd.ocm 在这些域名下都有效 * */

    setcookie($name,$value,$expire $path,$domain)

    参数说明

    $name 参数用于指定cookie名称

    $value 参数用于设置cookie值

    $expire参数用于设置cookie的声明周期

    $path 参数用于设置服务器上可用cookie的路径,如果设置 ‘/’ ,则代表在整个域名内都有效,如果设置为‘/foo/,’则仅代表在域名内的/foo目录及其子目录内有效

    $domain 参数用于设置cooki可用的域名范围(包含子域名)

    会话期cookie是指浏览器关闭之后会被自动删除,也就是它仅在会话期间有效,会话期cookie不需要指定过期时间,

    如果想马上失效的话,就把时间那个加号+变为-号就行

    64.0 

    1.0 什么是session

    session 在计算机中,尤其是在网络应用中,称为“会话控制”;

    具体到web中的session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间,因此从上述的定义中可以看到session是一个特定的时间概念。

    2.0 为什么要使用session

    为了解决http短连接的特性

    2.1 http协议是一种无状态协议,即同一个客户端的本次请求和上次请求没有对应关系,http服务器并不知道这两个请求来自统一客户端:

    优点:在于减轻服务器的压力:缺点:在于每次请求会传输大量重复的内容信息

    2.2 session提供在php脚本中定义全局变量的方法,使得整个全局变量在同一个session中对于所有的php脚本文件内都有效。所以,session是汲取http服务器的用于保持状态的方法

    2.3 session允许通过将数据存储在http服务器中,以在整个用户会话过程中保持该数据;所以sesssion不仅是一个时间概念,还包括了特定的用户和服务器。

    3.0 session的工作原理

    3.0 4.0

    会话标识符(sessionID)

    ~会话由一个唯一标识符标识,可使用session_id函数读取此标识符,为php应用程序启用会话状态时,将检查应用程序中每个页面请求是否有浏览器发送的sessionID值,如果未提供任何sessionID值,则php将启动一个新会话,并将该会话的sessionID值随响应一起发送到浏览器

    ~默认情况下,sessionID值存储在Cookie中,也可以实现在url中存储sesssionID

    ~只要一直使用相同的sessionID值来发送请求,会话就被视为活动的;如果特定会话的请求间隔超过指定的超时值(以秒为单位),则该会话被视为已过期,如果使用过期的sessionID值发送的请求将生成一个新的会话,超时值是24分钟

    4.0 与session相关的函数

    session_start([array $options = []]) 启动新会话或者重用现有会话

    、、 及创建一个sessionid也创建了一个session文件

    $options参数是一个关联数组,如果提供的话,则会用其中的项目覆盖 ‘会话配置’中的配置选项;

    如果通过get 或者post 方式,或者使用cookie提交了会话id,则会重用现有会话;

    demo:

    session_start() //开始session会话

    $_SESSION['username] = 'mooc' // 存储session数据

    、、 获取sessionid

    echo ‘id是’,session_id()

    设置session 名字

    session_name('mooc');

    $SESSION['userid'] = 5;

    $_SESSION['name'] = 'xiao'

    // 销毁的操作 销毁一个会话中的全部数据

    session_destroy();

    5.0 6.0

    5.0 php配置中的session片段

    65.0 

    相关文章

      网友评论

          本文标题:php1.0

          本文链接:https://www.haomeiwen.com/subject/obtmlxtx.html