zoukankan      html  css  js  c++  java
  • PHP 部分语法(二)

    array() 创建数组:

      1、数值数组:带数字 ID 键的数组

      2、关联数组:带有指定键的数组,键关联一个值

      3、多维数组:包含一个或多个数组的数组

    $arr = array("Hello", "World");    // 数值数组
    $age = array("Peter" => "35", "Ben" => "37");    // 关联数组
    echo $age["Peter"];    // 35

    数组方法:

      1、count($arr):获取长度

      2、foreach($array as $value):遍历数组

    $arr = array(1, 2, 3, 4, 5);
    echo count($arr).PHP_EOL;    // 输出长度 5
    foreach ($arr as $num)    // 依次输出数组中的元素
        echo "$num".PHP_EOL;

      3、sort($arr)、rsort($arr):对数组进行升序、降序排序

    $arr = array(6, 7, 1, 4, 5);
    sort($arr);    // 升序排列
    foreach ($arr as $num)
        echo $num.PHP_EOL;
    rsort($arr);    // 降序排列
    foreach ($arr as $num)
        echo $num.PHP_EOL;

      4、asort($arr)、arsort($arr):根据关联数组的值进行升序、降序排序

    $arr = array("1" => 3, "2" => 2, "3" => 1);
    asort($arr);
    foreach ($arr as $a)    // 1 2 3
        echo $a.PHP_EOL;
    arsort($arr);
    foreach ($arr as $a)    // 3 2 1
        echo $a.PHP_EOL;

      5、ksort($arr)、krsort($arr):根据关联数组的键进行升序、降序排序

    $arr = array("1" => 3, "2" => 2, "3" => 1);
    ksort($arr);
    foreach ($arr as $a)    // 3 2 1
        echo $a.PHP_EOL;
    krsort($arr);
    foreach ($arr as $a)    // 1 2 3
        echo $a.PHP_EOL;

    超级全局变量:

      1、$GLOBALS:包含了全部变量的全局组合数组,变量名就是数组的键

      2、$_SERVER:一个包含诸如头信息、路径以及脚本位置等信息的数组

    $x = 15;
    function test() {
        $GLOBALS["x"] = 5;
    }
    test();
    echo $x.PHP_EOL;    // 5
    echo $_SERVER["PHP_SELF"];    // 当前执行脚本文件名

      3、$_REQUEST:用于收集 HTML 表单提交的数据

      4、$_POST:广泛用于收集表单数据,在 HTML 的 form 标签指定 post

      5、$_GET:广泛用于收集表单数据,表单属性为 "method = get"

    类:

      1、使用 class 关键字后加上类名定义

      2、类名后用一对大括号在里面定义变量和方法

      3、类的变量使用 var  来声明,变量也可以初始化值

      4、函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化对象访问

      5、变量 $this 代表自身对象,PHP_EOL 为换行符

      6、使用 new 来实例化一个类对象

      7、构造函数:function __construct([mixed $args[, $...]])

      8、析构函数:function __destruct(void)

      9、使用 extends 来继承一个类,PHP 不支持多继承

      10、我们可以把从父类继承来的方法进行改写,以满足子类需求

      11、我们可以在属性或方法面前加上访问控制的关键字来实现访问控制,默认为 public

      12、PHP 不会在子类的构造方法中自动调用父类的构造方法

      13、若要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct()

      14、若子类没定义构造方法,则会继承父类的

    class Greeter {
        var $name;
        function __construct($your_name) {
            $this->$name = $your_name;
            echo "<p>In Greeter</p>";
        }
        function say() {
            return "Hello ".$this->$name."!";
        }
    }
    $greet = new Greeter("Lemon");    // In Greeter
    echo $greet->say();    // Hello Lemon!
    class Say extends Greeter {
        function __construct() {
            echo "<p>In Say</p>";
            parent::__construct("Yam");
        }
    }
    $say = new Say();    // In Say    In Greeter
    echo $say->say();    // Hello Yam!

    注:自 PHP5.3.0 起,可用一个变量来动态调用类,但变量值不能为关键字

      可把类中始终不变的值定义为常量,常量必须是一个定值,定义及使用时不需使用 $

    接口:

      1、使用 interface 来定义接口(指定某个类需要实现哪些方法,但不需要定义它们)

      2、所有的方法必须公有

      3、使用 implements 来实现接口中的所有方法,可实现多个接口,接口间用逗号隔开

    interface test {
        public function get_name();
        public function set_name($name);
    }
    class information implements test {
        var $name;
        function __construct($your_name) {
            $this->$name = $your_name;
        }
            // 若下面的方法有一个没实现则会报错
        function get_name() {
            return $this->$name;
        }
        function set_name($your_name) {
            $this->$name = $your_name;
        }
    }
    $info = new information("Lemon");
    echo $info->get_name().PHP_EOL;    // Lemon
    $info->set_name("Yam");
    echo $info->get_name();    // Yam

     

    抽象类:

      1、任何一个类,如果里面至少有一个方法是抽象的,则该类必须为抽象的

      2、抽像类不能被实例化(abstract)

      3、继承一个抽象类时,子类必须定义抽象父类的所有抽象方法,且访问控制必须和父类一样或更宽松

    abstract class AbstractClass
    {
     // 强制要求子类定义这些方法
        abstract protected function getValue();
        abstract protected function prefixValue($prefix);
        // 普通方法(非抽象方法)
        public function printOut() {
            print $this->getValue() . PHP_EOL;
        }
    }
    class ConcreteClass extends AbstractClass
    {
        protected function getValue() {
            return "ConcreteClass";
        }
        // 比原来更加宽松
        public function prefixValue($prefix) {
            return "{$prefix}ConcreteClass";
        }
    }
    $class1 = new ConcreteClass;
    $class1->printOut();
    echo $class1->prefixValue('FOO_') . PHP_EOL;

    static 关键字:

      1、声明类属性或方法为 static 就可以不实例化而直接访问

      2、静态属性不能通过一个类已实例化的对象来访问,但静态方法可以

      3、由于静态方法不需要通过对象即可调用,所以伪变量 $this 不可用

      4、静态方法不可以由对象通过 -> 操作符来访问

    class Test {
        public static $num = 1;
        public function add_num() {
            echo ++self::$num.PHP_EOL;
        }
    }
    echo Test::$num.PHP_EOL;   // 1
    $test = new Test();
    $test->add_num();    // 2
    $test->add_num();    // 3
    $test = new Test();
    $test->add_num();    // 4 

    final 关键字:

      1、若父类中的方法被声明为 final,则子类无法覆盖该方法

      2、若一个类被声明为 final,则不能被继承

  • 相关阅读:
    JavaWeb学习笔记(9)
    JavaWeb学习笔记(8)
    JavaWeb学习笔记(7)
    JavaWeb学习笔记(6)
    JavaWeb学习笔记(5)
    JavaWeb学习笔记(4)
    Plans(Real-Time Update)
    CSP-J2 2020 题解(Updating)
    Lcez#111 yist
    洛谷P1104 生日
  • 原文地址:https://www.cnblogs.com/lemonyam/p/11291968.html
Copyright © 2011-2022 走看看