PHP记录-数组-类

指针函数

next();     //下一个
prev();     //上一个
reset();    //回到第一个
end();      //回到最后一个
each();     //指针移动
key();      //获取当前的下标
current();  //获取当前的值

超全局数组

 $_SERVER   //服务器变量
 $_GET      //环境变量
 $_POST     //HTTP GET变量
 $_ENV      //HTTP POST变量
 $_FILES    //request变量
 $_REQUEST  //HTTP文件上传变量
 $_COOKIE   //HTTP Cookies
 $_SESSION  //Session变量
 $GLOBALS   //Global变量
//超全局数组 页脚预定义变量

数组函数

array_change_key_case   // 将数组中的所有键名修改为全大写或小写
array_chunk             // 将一个数组分割成多个
array_column            // 返回数组中指定的一列
array_combine           // 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_count_values      // 统计数组中所有的值 **
array_diff_assoc        // 带索引检查计算数组的差集
array_diff_key          // 使用键名比较计算数组的差集
array_diff_uassoc       // 用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey         // 用回调函数对键名比较计算数组的差集
array_diff              // 计算数组的差集
array_fill_keys         // 使用指定的键和值填充数组
array_fill              // 用给定的值填充数组
array_filter            // 用回调函数过滤数组中的单元 **
array_flip              // 交换数组中的键和值
array_intersect_assoc   // 带索引检查计算数组的交集
array_intersect_key     // 使用键名比较计算数组的交集
array_intersect_uassoc  // 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey    // 用回调函数比较键名来计算数组的交集
array_intersect         // 计算数组的交集
array_key_exists        // 检查数组里是否有指定的键名或索引 **
array_keys              // 返回数组中部分的或所有的键名
array_map               // 为数组的每个元素应用回调函数 **
array_merge_recursive   // 递归地合并一个或多个数组
array_merge             // 合并一个或多个数组
array_multisort         // 对多个数组或多维数组进行排序
array_pad               // 以指定长度将一个值填充进数组
array_pop               // 弹出数组最后一个单元(出栈)
array_product           // 计算数组中所有值的乘积
array_push              // 将一个或多个单元压入数组的末尾(入栈)
array_rand              // 从数组中随机取出一个或多个单元
array_reduce            // 用回调函数迭代地将数组简化为单一的值
array_replace_recursive // 使用传递的数组递归替换第一个数组的元素
array_replace           // 使用传递的数组替换第一个数组的元素
array_reverse           // 返回单元顺序相反的数组
array_search            // 在数组中搜索给定的值,如果成功则返回首个相应的键名
array_shift             // 将数组开头的单元移出数组
array_slice             // 从数组中取出一段
array_splice            // 去掉数组中的某一部分并用其它值取代
array_sum               // 对数组中所有值求和
array_udiff_assoc       // 带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc      // 带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff             // 用回调函数比较数据来计算数组的差集
array_uintersect_assoc  // 带索引检查计算数组的交集,用回调函数比较数据
array_uintersect_uassoc // 带索引检查计算数组的交集,用单独的回调函数比较数据和索引
array_uintersect        // 计算数组的交集,用回调函数比较数据
array_unique            // 移除数组中重复的值
array_unshift           // 在数组开头插入一个或多个单元
array_values            // 返回数组中所有的值 **
array_walk_recursive    // 对数组中的每个成员递归地应用用户函数
array_walk              // 使用用户自定义函数对数组中的每个元素做回调处理 **
arsort                  // 对数组进行逆向排序并保持索引关系
asort                   // 对数组进行排序并保持索引关系
compact                 // 建立一个数组,包括变量名和它们的值
count                   // 计算数组中的单元数目,或对象中的属性个数 **
current                 // 返回数组中的当前单元
each                    // 返回数组中当前的键/值对并将数组指针向前移动一步
end                     // 将数组的内部指针指向最后一个单元
extract                 // 从数组中将变量导入到当前的符号表
in_array                // 检查数组中是否存在某个值
key_exists              // 别名 array_key_exists
key                     // 从关联数组中取得键名
krsort                  // 对数组按照键名逆向排序
ksort                   // 对数组按照键名排序
list                    // 把数组中的值赋给一组变量
natcasesort             // 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort                 // 用“自然排序”算法对数组排序
next                    // 将数组中的内部指针向前移动一位
pos                     // current 的别名
prev                    // 将数组的内部指针倒回一位
range                   // 根据范围创建数组,包含指定的元素
reset                   // 将数组的内部指针指向第一个单元
rsort                   // 对数组逆向排序
shuffle                 // 打乱数组
sizeof                  // count 的别名
sort                    // 对数组排序
uasort                  // 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort                  // 使用用户自定义的比较函数对数组中的键名进行排序
usort                   // 使用用户自定义的比较函数对数组中的值进行排序
array                   // 新建一个数组

  1. 子类使用extends继承父类,子烈可以将父类中所有的内容都继承过来
  2. private 这是私有修饰符,只能自己用,不能其他类用,包括自己的子类也不能用。
  3. proteced 这个是保护的权限,只能是自己和自己的子类可以使用的成员,不能在外面使用。
  4. public 这个是公开的权限,所有都可以用、自己、子类、类外部都可以使用.

  1. 对象->成员
  2. 类::成员
  3. parent::成员 使用parent::访问父类中被覆盖的方法 构造方法也可以覆盖

  1. static 可以修改属性和方法,不能修饰类
  2. 使用static修饰成员属性,存在内存的初始化静态段。
  3. 可以被所有同一类的对象共用。
  4. 第一个用到类(类名第一次出现),类在加载到内存时,就已经将静态成员加到内存了。
  5. 静态的成员一定要使用类来访问。 ojb::obj = new obj(); $obj->dd;
  6. self可以在类中的方法中,代表自己类的(dd;
  7. 静态成员一旦加载,只有脚本结束才会被释放。
  8. 在静态的方法中,不能访问非静态成员的。 换句话说就是在静态方法当中不能使用$this->关键字
  9. 只要是能使用静态的环境下声明方法,就是最好使用静态方法(效率)
  10. count 修饰的成员属性为常量,只能修饰成员属性
    • 常量建议使用大写,不能使用$
    • 常量一定要在声明时就给好初始值
    • 常量的访问方式和static的访问方式相同,但只能读
    • 在类外部使用 类名::常量名
    • 在类的内部用 self::常量名
    • final 类和方法
    • static 属性和方法
  • 这里是相关关系表

private protected public(默认)
自己类中
子类中
类的外部

类 抽象方法和抽象类

  1. 抽象方法定义:一个方法如果没有方法体(一个方法,不使用{},直接使用分好结束的方法,才是没有方法体的方法),则这个方法就是抽象方法
    • 声明一个方法,不使用{},而直接分号结束。
    • 如果是抽象方法,必须使用abstract(抽象关键字来修饰)
  2. 抽象类定义:如果一个类中有一个方法是抽象方法,则这个类就是抽象类。如果声明一个抽象类,则这个类不必须要使用 abstract关键字来修饰
    • 只要使用abstract 修饰的类,就是抽象类。(可以没有抽象方法)
    • 抽象类是一种特殊的类,特殊在抽象类中可以有抽象方法。
    • 除了在抽象类中可以有抽象方法以外,和正常的类完全一样。
    abstract class Demo
    {
        public $name;
        public $age;
        //特殊的方法抽象方法的存在
        abstract function say();
        
        abstract function eat();
        
        public function run()
        {
            echo "Hello World~!";
        }
    }

类 抽象类和接口

  1. 抽象类是一种抽象的类,接口是一种特殊的抽象类,接口也是一种特殊的类
  2. 抽象类和接口中都有抽象方法。
  3. 抽象类和接口都不能创建实例对象。
  4. 抽象类和接口使用意义也就是作用相同。 (都是定义一些规范)
  • 接口和对象相比:

    1. 接口中的方法,必须全要是抽象方法(不能用不抽象的方法)
    2. 接口中的成员属性,必须是常量(不能是变量)
    3. 所有的权限必须是共有的(public)
    4. 声明接口不是用class,而使用interface
  • 接口应用的有些细节:

    1. 可以使用extends 让一个接口继承另一个接口(接口和接口----只有扩展新抽象方法,没有覆盖的关系)
    2. 可以使用一个类来实现接口中的全部方法,也可以使用一个抽象类,来实现接口中的部分方法
    3. (类与接口,抽象类与接口--覆盖--重写,实现接口中的抽象方法)
    4. 就不要使用extends 这个关键字,使用implements实现
    5. implements 相当于 extends extends继承(扩展)。在php当中一个类只能有一个父类
    //声明一个接口使用 interface
    interface Demo
    {
        const NAME = "deme";
        const SEX = "1";

        public function test();
        public function test2();
        public function test3();
    }

    interface Test extends Demo
    {
            public function test4();
    }
    
    abstract class Hello implements Test
    {
        
    }   

类 多态特性

interface USB
{
    const OSD = 12;
    public function load();
    public function run();
    public function stop();

}

class Cumputer
{
    public function useUSB(USB $usb)
    {
        $usb->load();
        $usb->run();
        $usb->stop();
    }
}

class Mouse implements USB
{
    static $keys = '鼠标';
    public function load()
    {
        // TODO: Implement load() method.
        echo "加载".self::$keys."成功".PHP_EOL;
    }
    public function run()
    {
        // TODO: Implement run() method.
        echo "运行".self::$keys."功能".PHP_EOL;
    }
    public function stop()
    {
        // TODO: Implement stop() method.
        echo "结束".self::$keys."成功".PHP_EOL;
    }
}

class KeyPress implements USB
{
    static $keys = '键盘';
    public function load()
    {
        // TODO: Implement load() method.
        echo "加载".self::$keys."成功".PHP_EOL;
    }
    public function run()
    {
        // TODO: Implement run() method.
        echo "运行".self::$keys."功能".PHP_EOL;
    }
    public function stop()
    {
        // TODO: Implement stop() method.
        echo "结束".self::$keys."成功".PHP_EOL;
    }
}

class Worker
{
    public function use()
    {
        $c = new Cumputer();
        $m = new Mouse();
        $k = new KeyPress();
        $c->useUSB($m);
    }
}
$w = new Worker();
$w->use();

你可能感兴趣的:(PHP记录-数组-类)