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::dd; 访问类中的静态成员属性 而不能使用:obj = new obj(); $obj->dd;
  6. self可以在类中的方法中,代表自己类的(this) 本类中的静态属性可以使用: 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();
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,362评论 0 4
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,534评论 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,763评论 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,627评论 0 11
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,586评论 4 12