• php初级之数组与 类初级


    PHP 是后端脚本语言,回顾一下:

    1.1 PHP 数组:

    1 <?php
    2     $user = array();                           // 定义一个数组
    3     $user[0] = 'zhangsan';                     // 给数组赋值
    4     $user[2] = 'lizi';                         // 给数组赋值
    5     echo count($user).'<br>';                  //输出数组中元素的个数
    6     print_r( $user );                          // 打印数组的详细项目
    7 ?>

    运行结果:

    1.2 数组输出乱码:

    <?php
        $user = array();      // 定义一个数组
        //[] 是在该数组 最大的数字索引上+1
        $user[] = 'zhangsan';
        $user[8] = '李四';
        $user[] = '王明';
        $user[] = '张三';
        $user[] = '毛小芳';
        $user[] = 'wangwu';
        echo count($user).'<br>';
        print_r( $user );
    ?>

    1.3 在PHP文件开头加入header("Content-type: text/html; charset=utf-8"); 

    <?php
        header("Content-type: text/html; charset=utf-8"); 
        $user = array();      // 定义一个数组
        //[] 是在该数组 最大的数字索引上+1
        $user[] = 'zhangsan';
        $user[8] = '李四';
        $user[] = '王明';
        $user[] = '张三';
        $user[] = '毛小芳';
        $user[] = 'wangwu';
        echo count($user).'<br>';
        print_r( $user );
    ?>

    乱码变OK了:

    1.4  array_keys() 获取数组的键的数组(这里有点类似js中Object.keys() 获取对象的键的数组),array_values()获取数组的值组成的数组

    implode(): 把数组链接成字符串:语法implode(separator,array);

    separator  可选,规定在数组元素之间放置的内容;如果没有separator 则默认是""(空字符串)

    explode():把字符串分隔,然后组合成数组:语法explode(separator,string,limit) ;

    separator 必须,规定在哪里分隔字符串

    string必须,需要分隔的字符串

    limit 可选,规定返回的数组的最大数量

     1 <?php
     2     header("Content-type: text/html; charset=utf-8"); 
     3     $user = array(
     4         'title' => '星星',
     5         'content' => '恒星',
     6         'age' => '25亿万年'
     7     );
     8     $keys = array_keys( $user );
     9     print_r( $keys );
    10     //implode--->join (在js中用join进行链接)    implode 把数组以','为分隔符链接成字符串;格式 implode(separator,array);
    11     // explode 把字符串分隔成数组,格式 explode(separator,string,limit)
    12     echo implode( ",", $keys )."<br>";
    13     $values = array_values( $user );
    14     print_r( $values );
    15     echo implode( "','", $values )."<br>";
    16 ?>

    运行结果:

    1.5 遍历数组:

     1 <?php
     2     header("Content-type: text/html; charset=utf-8"); 
     3     $userList = array(
     4         0 => array(
     5             '张三',
     6             '李四',
     7         ),
     8         1 => array(
     9             '小星星',
    10             '小强强'
    11         )
    12     );
    13     // 这里的foreach 类似js中的forEach()以及for(var i in obj)
    14     foreach( $userList as $k => $v ){
    15         echo $k . '--->' . $v[0] . '--->' . $v[1] . '<br/>';
    16     }
    17     echo  "<br>"."--------------这里是分割符------------------"."<br>"."<br>";
    18     foreach( $userList as $k => $v ){
    19         // echo $k . '--->';
    20         echo $k;
    21         foreach( $v as $k2 => $v2 ){
    22             echo '---->' . $v2;
    23         }
    24         echo '<br/>';
    25     }
    26 ?>

    运行结果:

    1.5.2 foreach遍历:

    格式:foreach($arr as $key => $value) ,也可以简写为for($arr as $value) 省略$key

     1 <?php
     2     header("Content-type: text/html; charset=utf-8"); 
     3     $arr = array(
     4         0 => 1,
     5         3 => 10,
     6         5 => 100
     7     );
     8 
     9     foreach( $arr as $key => $val ){
    10            echo $key . '-->' . $val . '<br/>';
    11      }
    12 
    13     foreach( $arr as $val ){
    14         echo $val . '<br/>';    
    15     }
    16 ?>

    1.5.3 for循环,缺点是不能遍历不连续的数字索引,或者字符串索引

     1 <?php
     2     header("Content-type: text/html; charset=utf-8"); 
     3     $arr = array(
     4         0 => 1,
     5         3 => 10,
     6         5 => 100
     7     );
     8 
     9     echo '数组的长度是:'.count($arr).'<br>'; //3
    10 
    11     //$i---> 0, 1, 2 
    12     //for循环的缺点:不能遍历 不连续的数字索引 和 字符串索引
    13     for( $i = 0; $i < count( $arr ); $i++ ){
    14         // $arr[0] $arr[1] $arr[2]
    15         echo $arr[$i] . '<br/>';
    16     }
    17 
    18 ?>

    2. 创建一个类

     1 <?php
     2     /*
     3         定义一个类:格式如下
     4         class 类名称 {
     5 
     6         }
     7         类是由n个属性和方法组成的
     8     */
     9    
    10     header("Content-type: text/html; charset=utf-8"); 
    11         class MobilePone{
    12             public $cpu ='麒麟970';
    13             public $memory = "640G";
    14             public function favarit(){
    15                 echo '上网';
    16             }
    17             public function play(){
    18                 echo '神秘星球';
    19             }
    20             public function pragram(){
    21                 echo '编程网页';
    22             }
    23         }
    24         // 调用:想要调用,首先需要进行实例化 ,这里和js有点类似,在js中,构造函数的调用,也需要进行实例化,然后才能调用
    25         // 实例化对象:对象名 = new 类名()   
    26         $shili = new MobilePone();
    27         // 然后是调用
    28         // 调用方法:对象->方法名
    29         $shili->play();
    30         echo '<br>';   // 这里是换行
    31         $shili->favarit();
    32         echo '<br>';   // 这里是换行
    33         $shili->pragram();
    34         echo '<br>';  
    35         //调用属性:  对象->属性名称[注意,属性名前面不需要美元符号]
    36         echo $shili->cpu;
    37         echo '<br>';  
    38         echo $shili->memory;
    39 ?>

    运行结果:

    2.2 类中的修饰符(权限控制符)

     1 <?php
     2     //Object.defineProperty  
     3     header("Content-type: text/html; charset=utf-8"); 
     4     class Computer {
     5         //public: 属性修饰符: 用来控制 属性/方法 的访问权限
     6         /*
     7             常见的属性修饰符用3个:
     8                 public( 公共的 )
     9                 protected: 受保护的( 继承里面讲 )
    10                 private: 私有的
    11         */
    12 
    13         //类的外面: 类的定义中 {} 的外面
    14         //类的里面:   类的定义中 {} 的里面
    15         public $keyboard = '键盘'; //public: 在类的外面 和 类的里面 都能够访问
    16         public $mouse = '鼠标';
    17         private $cpu = '64核 麒麟975'; //private: 只能在类的内部才能访问
    18         public function showInfo(){
    19             //this: 哪个对象调用我,我就指向谁
    20             // '.'号:在php中,用于字符串的链接,相当于js中的'+'号
    21             echo $this->cpu . '--->' . $this->mouse . '--->' . $this->keyboard;
    22         }
    23     }
    24     $c = new Computer();
    25     $c->showInfo();
    26  ?>

    2.3 在类外是不能够访问私有属性的(即private 作为修饰符的部分,只能在类内部访问)

     1 <?php
     2     //Object.defineProperty  
     3     header("Content-type: text/html; charset=utf-8"); 
     4     class Computer {
     5         //public: 属性修饰符: 用来控制 属性/方法 的访问权限
     6         /*
     7             常见的属性修饰符用3个:
     8                 public( 公共的 )
     9                 protected: 受保护的( 继承里面讲 )
    10                 private: 私有的
    11         */
    12 
    13         //类的外面: 类的定义中 {} 的外面
    14         //类的里面:   类的定义中 {} 的里面
    15         public $keyboard = '键盘'; //public: 在类的外面 和 类的里面 都能够访问
    16         public $mouse = '鼠标';
    17         private $cpu = '64核 麒麟975'; //private: 只能在类的内部才能访问
    18 
    19         public function showInfo(){
    20             //this: 哪个对象调用我,我就指向谁
    21             // '.'号:在php中,用于字符串的链接,相当于js中的'+'号
    22             echo $this->cpu . '--->' . $this->mouse . '--->' . $this->keyboard.'<br>';
    23         }
    24     }
    25 
    26     $c = new Computer();
    27     $c->showInfo();
    28    
    29     echo $c->keyboard.'<br>';
    30     echo $c->mouse.'<br>';
    31     echo $c->cpu.'<br>'; //报错, 在类的外面 不能访问私有的属性
    32 
    33 ?>

    2.4  类外也不能访问受保护的属性(即用protected 修饰的属性)

     1 <?php
     2     //Object.defineProperty  
     3     header("Content-type: text/html; charset=utf-8"); 
     4     class Computer {
     5         //public: 属性修饰符: 用来控制 属性/方法 的访问权限
     6         /*
     7             常见的属性修饰符用3个:
     8                 public( 公共的 )
     9                 protected: 受保护的( 继承里面讲 )
    10                 private: 私有的
    11         */
    12 
    13         //类的外面: 类的定义中 {} 的外面
    14         //类的里面:   类的定义中 {} 的里面
    15         public $keyboard = '键盘'; //public: 在类的外面 和 类的里面 都能够访问
    16         public $mouse = '鼠标';
    17         private $cpu = '64核 麒麟975'; //private: 只能在类的内部才能访问
    18         protected $aaa = '这是受保护的属性';
    19         public function showInfo(){
    20             //this: 哪个对象调用我,我就指向谁
    21             // '.'号:在php中,用于字符串的链接,相当于js中的'+'号
    22             echo $this->cpu . '--->' . $this->mouse . '--->' . $this->keyboard.'--->'.$this->aaa.'<br>';
    23         }
    24     }
    25     $c = new Computer();
    26     $c->showInfo();
    27    
    28     echo $c->keyboard.'<br>';
    29     echo $c->mouse.'<br>';
    30     echo $c->aaa.'<br>';//报错, 在类的外面 不能访问受保护的属性 
    31    
    32 ?>

    3. 构造函数 __construct():函数在实例化的时候,就会调用构造函数

    <?php
       /*
            构造函数:
                1, 定义的时候, 他的函数名 __construct
                    php4 构造函数名是跟类同名
                2, 构造函数 不需要手动去调用, 自动被调用
                3, 当对象实例化的时候, 构造函数会被自动调用
       */ 
        header("Content-type: text/html; charset=utf-8"); 
        class Person{
            public $name;
            public $sex;
            public function __construct($n,$s){
                echo '如果此段文字被输出了,说明实例化类的时候会调用__construct()函数'.'<br>';
                $this->name = $n;
                $this->sex = $s;
            }
        }
        $p1 = new Person('huanying2015','man');
        $p2 = new Person('aluoha','man');
    ?>

    4. 继承:

    继承1:父类所有的public修饰的属性和方法;继承2:父类所有的protected 修饰的属性和方法

    类的继承格式:

    class 类名  extends 父类名{}

    <?php
        header("Content-type: text/html; charset=utf-8"); 
        class Person {
            public $name;
            public $age;
    
            public function __construct( $n, $a ){
                $this->name = $n;
                $this->age = $a;
                echo '父类实例化'.'<br>';
            } 
    
            public function speak(){
                echo '说话<br/>'.'<br>';
            }
    
            protected function eat(){
                echo '吃饭<br/>'.'<br>';
            }
    
            private function waimao (){
                echo '长相<br/>'.'<br>';
            }
        }
    
        //class 类名 extends 父类名
        /*
            继承 到底 继承了什么?
                1,父类所有的public的属性和方法
                2, 父类所有的protected的属性和方法
                3, private的属性和方法 不会继承过来
    
            public: 类内,类外,子类 可以访问
            protected: 类内,子类 可以访问
            private: 类内 可以访问
    
        */
        class Student extends Person{
            public $No;
            // 扩展构造函数
            // public function __construct($n,$a,$no){
            // echo '子类实例化'.'<br>';
            // //parent:父类
            // parent::__construct($n,$a); // 调用父类的方法:构造函数
            // $this->No = $no;            // 把自己扩展的属性也加上去,这样自己的构造函数就完整了
            // }
            // 也可以重写构造函数
            public function __construct($n,$a,$no){
                echo '子类实例化'.'<br>';
                $this->name = $n;
                $this->age = $a;
                $this->No = $no;
            }
            // 如果不满意父类的方法,可以重写父类的方法,改写完成后,对父类不会造成影响
            public function speak(){
                echo '我是一名学生,说的是学生话'.'<br>';
            }
            // 父类没有的类,可以在这里进行扩展,添加新类
            public function test(){
                echo '我的学号是:'.$this->No.'学生正在考试'.'<br>';
    
                $this->eat();  //protected 修饰的方法:能够被子类继承,所以此处可以被访问
                $this->waimao(); //pravite 修饰的方法:不能够被子类继承,所以此处是访问不到的,会报错
            }
    
        }
    
        $p = new Person( '周星星', 23 );           // 父类实例化
        $p->speak();           // 父类方法调用
    
        $stu = new Student('光头强', 22, '2342343' ); // 子类实例化
        $stu->speak();       // 子类方法调用,这里是调用重写后的方法
        $stu->test();          // 子类调用扩展的方法
    
    ?>

    小结:修饰符的说明:

    public:类外可以调用,类内可以调用,可以继承

    protected:类外不可以调用,类内可以调用,可以继承

    private:类外不可以调用,类内可以调用,不可以继承

    http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    asp.net源码坊2015-3月第二周TOP10下载排行
    Asp.Net编程需要学习什么
    面试的同学看过来
    Asp.Net模板生成HTML页面
    毕业设计之房产中介系统源码
    HTML常用状态代码
    Asp.Net毕业设计论文
    网页常用Javascript
    intellij idea使用笔记
    bootstrap-table使用笔记
  • 原文地址:https://www.cnblogs.com/huanying2015/p/8386920.html
Copyright © 2020-2023  润新知