zoukankan      html  css  js  c++  java
  • [php]php总结(2)

    18、数组
    $arr[null] = 20; //array([]=>20)
    $arr[] = 20;//默认为下一个下标赋值
    unset()可以删除数组元素,但不会重建索引
    array_values()可以重建索引

    19、list()
    在list中声明变量,可以将数组中的值按顺序赋给list中的变量

    20、each()
    用于处理数组,可以返回数组元素的键和值,键和值利用索引去获取,0和key对应键,1和value对应值,而且重复调用,each()会自动处理下一个数组

    21、利用list()和each()联合while循环
    while(list($key, $value) = each($arr)){
    echo $key." ".$value;
    }
    但是接下来再进行$arr同样的while的循环时将不能够处理,因为each()内部的指针已经移到末尾,需要用reset()重置数组指针

    22、控制数组指针
    next(),prev(),end(),reset()
    key()获取当前数组的指针位置的键
    current()获取当前指针位置指向的值

    23、预定义全局变量(超全局数组)
    $_SERVER 服务器变量
    $_ENV 环境变量
    $_GET HTTP GET
    $_POST HTTP POST
    $_REQUEST GET POST COOKIE都可以接收
    $_FILES HTTP文件上传变量
    $_COOKIE HTTP cookie
    $_SESSION
    $GLOBALS 包含所有信息

    24、数组键值函数
    array_values($arr);获取所有值
    array_keys($arr[, $str]);获取所有键或值对应的键
    in_array($needle, $arr[,$bool]);是否存在[检查二者类型],区分大小写
    array_flip($arr);返回数组键值对换新数组,注意值相同的键值对对换后发生覆盖
    array_reverse($arr);返回反转数组元素新数组
    array_count_values($arr);统计数组中值出现个数,返回新数组
    array_unique($arr);去重值,只留下第一个,返回新数组

    25、数组回调处理
    array_filter($arr[,$callback]);数组过滤,默认去除空值,可自定义回调函数,返回新数组,利用回调函数的返回值决定元素去留
    array_walk($arr, $callback[,$data]);对数组应用回调函数,可选参数可以传给回调函数,直接对原数组操作
    例子:
    $arr = array(1,2,-3,4,-5,6,-7,8,);
    array_walk($arr, function(&$val){
    $val = $val*2;
    });
    //或
    array_walk($arr, function(&$val, &$key){
    $val = $val*2;
    $key =
    });
    //或
    array_walk($arr, function(&$val, &$key, $reserve){
    $val = $val*2;
    $key =
    }, $reserve);
    array_map($callback, $arr1[,$arr2,...]);将回调函数作用于多个数组,并返回一个新数组
    例子:
    $arr1 = array(1,2,3,4,5);
    $arr2 = array("one", "two", "three", "four");
    //分别将$arr1和$arr2的值按序传到$v1,$v2,回调函数的返回值将作为新数组相应位置的一个新的元素,若两个数组长度不等,则缺值地方会以空值代替
    array_map(function($v1, $v2){
    return $v1+$v2;
    }, $arr1, $arr2);

    26、数组判断元素存在几个函数区别
    isset(),in_array();键对应的值为假值,会返回false
    array_key_exist();键对应的值为假值,返回true

    27、数组排序函数
    sort();数组升序
    rsort();数组逆序
    ksort();键名排序
    krsort();键名倒序
    asort();数组排序,保持索引关系
    arsort();数组逆序,保持索引关系
    natsort();对数组自然排序
    natcasesort();对数组不区分大小写自然排序
    usort();应用回调函数对数组排序
    uasort();同上,保持索引关系
    uksort();对键进行回调函数排序
    array_multisort();对多个数组排序,第一个数组排序后,随后数组元素按照与排序前第一个数组元素相对应位置进行排序,前提两个数组的长度相等

    28、数组拆分、合并
    array_slice($arr, $offset[,$length[,$bool]]);截取,默认重置数组的键,$bool决定是否关联索引
    array_splice(&$arr, $offset[,$length[,$replace]]);去掉元素,或用$replace替换若使用$replace,则必须指定$length
    array_combine($arr1, $arr2);将两个数组合并,数组1值为键,数组2值为值,前提两个数组长度相等,数组1的值有相同的,则会发生覆盖
    array_merge($arr1, ...);合并多个数组
    array_intersect($arr1, ...);计算多个数组交集
    array_diff($arr1, ....);计算多个数组差集

    29、数组与数据结构
    array_push();从尾入
    array_pop();从尾出
    array_unshift();从头入
    array_shift();从头出

    30、数组其他操作
    array_rand($arr[,$num]);随机从数组中取出一个或多个下标
    shuffle($arr);将数组元素顺序打乱
    array_sum(&$arr);计算数组元素值得和
    range($low, $high[,$step]);返回min($low,$high)->max($low,$high)的元素数组,可设定步长,$high可以任意大
    array_fill($start, $length, $value);利用$value填充从$start开始的$length个元素

    31、关键字
    var
    public
    protected
    private 私有,只能在类内调用
    static 可以修饰方法和属性,不能修饰类,类的对象共用,静态成员需要用类名调用(::),静态方法不能访问非静态成员
    instanceof用于检测某对象是否属于指定类
    final修饰的类不能被继承,修饰的方法不能被重写
    const只能修饰属性,被修饰的为常量,调用与静态变量相同

    32、实例化对象
    $var = new Lei;
    $var = new Lei();

    33、对象引用属性和方法的方式
    $this指向类的当前实例
    self指向类自身,一般用于处理类的静态成员
    parent,指向父类,一般用于子类调用父类的方法

    34、构造与析构方法
    对象创建第一个自动调用,可有参数
    function __construct(){}
    对象释放最后一个自动调用,没有参数
    function __destrcut(){}

    35、魔术方法
    __get($var);获取私有属性值
    __set();为私有属性赋值
    __isset();类内设置,则允许类外部利用isset()来判断私有属性
    __unset();类内设置,则允许类外部利用unset()来删除私有属性
    __toString();在输出对象时可以返回描述信息
    __clone();类似构造方法可以对克隆的副本做初始化
    __call($method, $args);
    调用对象中不存在的方法时,自动调用的方法
    有两个参数,第一个:调用不存在的方法的方法名,第二个:调用这个不存在的方法的方法参数
    例子:
    class people{
    private $name = "fan";
    private $age = 22;

    function __get($var){
    return $this->$var;
    }
    function __set($var, $val){
    $this->$var = $val;
    }
    function __isset($var){
    return isset($this->$var);
    }
    function __unset($var){
    unset($this->$var);
    }
    function __toString(){
    return "describe";
    }
    function __clone(){

    }
    }

    $p = new people;
    if(isset($p->name))
    echo true;
    echo $p->name;
    $p->age = 22;
    unset($p->age);

    36、单例设计模式
    (1) 私有化构造方法,类外部无法创建对象
    (2) 定义静态变量用于存储此类对象
    (3) 定义静态方法连返回对象
    class Single{
    static obj = null;

    private __construct(){}
    static function getSingle(){
    if(!self::obj)
    self::obj = new self;
    return self::obj;
    }
    }

    37、对象串行化
    对象串行化又称为对象序列化,也就是将对象格式化为字符串,可以实现对象的永久保存,利用函数serialize()实现,从字符串可以利用unserialize()实现反串行化
    魔术方法__sleep(),只要在这个方法中返回一个数组,只要那个数组中有属性的名称,则那个属性就会被串行化,注意是属性。
    魔术方法__wakeup(),对象反串行化时对象初始化作用,类似__clone,__construct

  • 相关阅读:
    串一串《数学之美》中的信息论的几个章节
    失败经历--在windows下安装meld
    xv6实验环境搭建
    python爬取网站数据
    零散知识
    Pycharm使用技巧
    变量
    电信光猫强制wifi(SSID)名称ChinaNet开头解决办法之一
    PhpStorm 常用快捷键
    Android Studio 安装与使用ADB wifi 无线调试
  • 原文地址:https://www.cnblogs.com/fantasy01/p/4483495.html
Copyright © 2011-2022 走看看