zoukankan      html  css  js  c++  java
  • 三篇文章带你极速入门php(一)之语法

    本文适合阅读用户

    1. 有其他语言基础的童鞋
    2. 看完w3cschool语法教程来回顾一下的童鞋(传送门,想全面看一下php语法推荐这里
    3. 毫无基础然而天资聪慧颇有慧根(不要左顾右看说的就是你,老夫这里有一本《php从入门到放弃》,观你根骨清奇10两银子卖给你如何)

    看完本文后你会收获到什么

    1. php的变量的定义,使用
    2. 函数的定义,使用,传递参数
    3. 数组的定义,调用,常用方法,使用场景
    4. php中循环,判断,选择结构的语法
    5. 类的定义,成员变量和成员函数的定义和使用

    相信我,认真看完本文,你就已经掌握了php常用的语法了,足以进行一些常规的开发,剩下的可以用到再学,避免在学了忘学了忘的语法坑中沉迷太久(๑•̀ㅂ•́)و✧

    用php导演一场情景剧

    这就是今天的目的,假设我们已经搭建好了环境(下一节会讲),现在开始进行 编码 创造世界。
    首先定义一下我们的题目,myphp

    //定义我们的题目
    $title = "myphp";
    

    php定义变量用$符号,php是弱类型变量语言,不区分变量的类型,""和它里边内容在一起表示一个字符串。 另外//表示注释,就是解释性的话,并不会作为代码运行

    //这个方法用来输出
    function show($str)
    {
        echo $str . "<br>";
    }
    

    再定义一个方法(也叫函数,只是叫法不一样而已啦),定义方法用function关键字,括号里的是参数,直接用变量表示就可以,在调用的时候接收调用时传来的参数
    echo是php自带的输出方法,没有括号是因为它比较特殊,可以先不管,会用就行
    .是php中字符串拼接的符号,<br>是html中的换行符,为了让输出更好看

    //方法直接调用就好
    show("hello " . $title);
    

    输出如下图
    image

    //定义发生异常时触发的函数
    function error($str)
    {
        echo "{$str}<br>";
        exit();
    }
    

    在""双引号内,可以直接用花括号包裹起来一个变量,这样在被调用的时候变量就会直接在字符串中替换为变量的值,单引号不可以
    exit()方法让整个程序结束

    //用[]可以直接创建一个空的数组,然后一一赋值
    $person1         = [];
    $person1['name'] = '高富帅';
    $person1['sex']  = '男';
    
    //也可以直接创建一个有值的数组
    $person2 = ['name' => '白富美', 'sex' => '女'];
    //这是一个二维数组,也可以用同样的方式创建更多维的数组
    $persons = [$person1, $person2];
    

    既然是情景剧,得有个男女主角呀,打印出来看看这个二维数组,发现下标是从0开始的,不要奇怪所有编程语言都是这样的
    image
    接下来定义一个类,类可以暂时理解为一些数据和方法的集合,也就是我们的情景剧啦

    class MyPhp
    {
    }
    

    定义类用class关键字,空格后是类的名字,注意只能是英文字母或者下划线_开头
    情景剧不能什么都没有啊,我们再给它定义一些必要的成员变量和成员方法

    class MyPhp
    {
        //表示我们的演员们
        public $actors = null;
        //自带bgm的情景剧
        public $music  = '我心永恒';
    
        public function __construct()
        {
            $this->start();
        }
    
        public function start()
        {
            $time = time();
            show("时间:{$time}");
            $date = date('Y-m-d h:m:s', $time);
            show("哦~一般人还是看日期好一点 {$date}");
            show("播放片头曲~~{$this->music}");
        }
    }
    
    1. 成员变量:成员变量直接用$符号声明就可以,public private protected 是成员变量的访问控制权限(同样适用于成员方法),分别表示共有,私有,受保护的,null是php里的空指针的关键字
    2. 成员方法:
      1. 有一些自带的成员方法,比如构造函数__construct,php中__开头(两个下划线)的函数都是默认自带的函数,__construct是构造函数,初始化一个类对象的时候会调用这个方法
      2. 可以自己定义成员方法,如start这个方法,定义方法和普通方法一样,控制权限和成员变量一样也是public private protected三个
      3. 调用成员变量,如$this->music,注意此时成员变量不要加$符号。调用成员方法,如$this->start()
    3. 时间和日期:time()方法获取一个当前的时间戳,date()方法接受两个参数,第一个是一个字符串表示格式化格式,第二个参数是一个时间戳,返回格式化之后的时间
        //定义一个方法,让演员加入进来
        public function actorJoin($actorlist)
        {
            //我们判断演员是一个数组并且有两个人才可以,否则男女主角肯定有一个人没来或者第三者插足了
            if (is_array($actorlist) && count($actorlist) == 2) {
                $this->actors = $actorlist;
            } else {
                error('还有演员没有就位');
            }
        }
    

    is_array()方法判断参数变量是否是数组
    count()方法返回参数数组的长度
    if(){}else{}结构是条件语句语法,括号内的判断语句如果成立,程序运行if下边大括号内的内容,否则运行else下大括号的内容

        //情景剧一开始们,演员得自我介绍一下吧,流程不能省
        public function introduce()
        {
            if (empty($this->actors)) {
                error('大家好我是导演,男女主角偷偷约会还没结束,今天可能来不了了');
            }
    
            foreach ($this->actors as $actor) {
                $intro = "我是{$actor['name']},";
                switch ($actor['sex']) {
                    case '女':
                        show($intro . "我是女主角。");
                        break;
                    case '男':
                        show($intro . "我是男主角。");
                        break;
                    default:
                        show($intro . "抱歉,我不知道我什么性别。");
                        break;
                }
            }
        }
    
    1. empty()函数判断数组是否为空,空返回true,也就是正确的意思,此处没有else,代表如果不满足if的条件,程序直接往下走,不运行大括号内的代码。
    2. foreach循环遍历数组,foreach($arr as $val),就是说对把$arr的所有成员依次赋值给$val,循环的次数就是$arr的长度
    3. switch语句针对同一地方不同值进行选择,可以避免多次if else,性能和可读性也更好
      1. switch后跟随的括号表示选择的变量
      2. case后的值和冒号后的代码,表示对应值和要运行的代码,注意要添加break,表示跳出本次判断,不然代码会继续往下运行
      3. defaul表示没有满足以上规定的case的时候,就运行default的代码
        //表演开始啦
        public function action()
        {
            if (empty($this->actors)) {
                error('演员临时有事,谢谢大家捧场');
            }
            //这是我们的剧本
            $play   = array();
            $play[] = "{$this->actors[0]['name']} 和 {$this->actors[1]['name']} 在街边相遇";
            $play[] = "{$this->actors[0]['name']} 深情脉脉的看着 {$this->actors[1]['name']}";
            $play[] = "以下省略一万字,请自行脑补......";
            $play[] = "全剧终";
            foreach ($play as $key => $val) {
                show("第{$key}幕");
                show($val);
            }
        }
        //不能草草结束,补个片尾曲
        public function end()
        {
            show('片尾曲,撒花完结');
        }
    
    1. array()函数会返回一个数组,如果没有参数就是一个空数组,也是创建数组的一个方式
    2. $this->actors[0]['name'],返回的是$this->actors的第一个成员的key为name的值
    3. foreach循环的第二种方式,as后边如果是 $key=>$val 这种,就会把数组的键赋值给$key,值赋值给$val,比上一种多了key可以使用
      好啦,万事俱备,现在让它运行起来吧
    $myphp = new MyPhp();
    $myphp->actorJoin($persons);
    $myphp->introduce();
    $myphp->start();
    $myphp->action();
    $myphp->end();
    

    new MyPhp()会创建一个MyPhp类型的类对象,让一个变量指向这个对象,就可以对这个对象的成员变量和成员方法进行调用和改动了。
    看看在浏览器上的输出
    image
    改一改在命令行里让它动态跑一下看效果(怎么弄的不重要)
    image

    好啦,回顾一下文章开头的你会收获到什么,你都学会了吗?
    不要急,下一节会讲搭建php环境,你就可以自己演个情景剧啦

    附:全部代码

    <?php
    //定义变量用 $ 符号
    //php是弱类型变量语言,不区分变量的类型
    //字符串 被""包围的部分就是字符串
    $title = "myphp";
    
    //定义方法 用function关键字
    //括号里的是参数,直接用变量表示就可以,在调用的时候接收调用时传来的参数
    //.是php中字符串拼接的符号
    function show($str)
    {
       echo $str . "<br>";
    }
    
    //方法直接调用就好
    show("hello " . $title);
    //exit()方法让整个程序结束
    //在""双引号内,可以直接用花括号包裹起来一个变量,这样在被调用的时候变量就会直接在字符串中替换为变量的值,单引号不可以哦
    function error($str)
    {
       echo "{$str}<br>";
       exit();
    }
    
    //用[]可以直接创建一个空的数组,然后一一赋值
    $person1         = [];
    $person1['name'] = '高富帅';
    $person1['sex']  = '男';
    
    //也可以直接创建一个有值的数组
    $person2 = ['name' => '白富美', 'sex' => '女'];
    //这是一个二维数组,也可以用同样的方式创建更多维的数组
    $persons = [$person1, $person2];
    
    //定义类用class关键字
    class MyPhp
    {
       //成员变量直接用$符号声明就可以
       //public private protected 是成员变量的访问控制权限
       //null是php里的空指针的关键字
       public $actors = null;
       public $music  = '我心永恒';
    
       //php中__开头(两个下划线)的函数都是默认自带的函数
       //__construct是构造函数,初始化一个类对象的时候会调用这个方法
       public function __construct()
       {
           $this->start();
       }
    
       public function start()
       {
           //time()方法获取一个当前的时间戳
           //date()方法接受两个参数,第一个是一个字符串表示格式化格式,第二个参数是一个时间戳,返回格式化之后的时间
           $time = time();
           show("时间:{$time}");
           $date = date('Y-m-d h:m:s', $time);
           show("哦~一般人还是看日期好一点 {$date}");
           //$this->music 调用成员变量,注意此时成员变量不要加$符号
           show("播放片头曲~~{$this->music}");
       }
    
       //演员加入
       public function actorJoin($actorlist)
       {
           //is_array()方法判断参数变量是否是数组
           //count()方法返回参数数组的长度
           //if(){}else{}是条件语句语法,括号内的判断语句如果成立,程序运行if下边大括号内的内容,否则运行else下大括号的内容
           if (is_array($actorlist) && count($actorlist) == 2) {
               $this->actors = $actorlist;
           } else {
               error('还有演员没有就位');
           }
       }
    
       public function introduce()
       {
           //empty()函数判断数组是否为空,空返回true,也就是正确的意思
           //此处没有else,代表如果不满足if的条件,程序直接往下走,不运行大括号内的代码。
           if (empty($this->actors)) {
               error('大家好我是导演,男女主角偷偷约会还没结束,今天可能来不了了');
           }
           //foreach循环遍历数组,foreach($arr as $val),就是说对把$arr的所有成员依次赋值给$val,循环的次数就是$arr的长度
           foreach ($this->actors as $actor) {
               $intro = "我是{$actor['name']},";
               //switch语句针对同一地方不同值进行选择,可以避免多次if else,性能和可读性也更好
               //switch后跟随的括号表示选择的变量,case后的值和冒号后的代码,表示对应值和要运行的代码,注意要添加break,表示跳出本次判断,不然代码会急需往下运行
               //defaul表示没有满足以上规定的case的时候,就运行default的代码
               switch ($actor['sex']) {
                   case '女':
                       show($intro . "我是女主角。");
                       break;
                   case '男':
                       show($intro . "我是男主角。");
                       break;
                   default:
                       show($intro . "抱歉,我不知道我什么性别。");
                       break;
               }
           }
       }
    
       public function action()
       {
           if (empty($this->actors)) {
               error('演员临时有事,谢谢大家捧场');
           }
           //array()函数会返回一个数组,如果没有参数就是一个空数组,也是创建数组的一个方式
           //$this->actors[0]['name'] 返回的是$this->actors的第一个成员的name
           $play   = array();
           $play[] = "{$this->actors[0]['name']} 和 {$this->actors[1]['name']} 在街边相遇";
           $play[] = "{$this->actors[0]['name']} 深情脉脉的看着 {$this->actors[1]['name']}";
           $play[] = "以下省略一万字,请自行脑补......";
           $play[] = "全剧终";
           //foreach循环的第二种方式,as后边如果是 $key=>$val 这种,就会把数组的键赋值给$key,值赋值给$val,比上一种多了key可以使用
           foreach ($play as $key => $val) {
               show("第{$key}幕");
               show($val);
           }
       }
    
       public function end()
       {
           show('片尾曲,撒花完结');
       }
    
    }
    
    $myphp = new MyPhp();
    $myphp->actorJoin($persons);
    $myphp->introduce();
    $myphp->start();
    $myphp->action();
    $myphp->end();
    
  • 相关阅读:
    JS 数字时钟的代码(摘录,忘了是从哪了)
    数据写入DataTable C# 2005
    C# 进制转化问题测试下再说(网上的直接转化不好用)
    防sql 注入,就是将sql 的执行命令给排除
    今天研究了一下午网站窄屏/宽屏的切换实现
    解决VS2005下中文输入法全角半角混乱的补丁
    一些实用的站长查询工具
    UE(用户体验)无处不在,留心处处皆学问
    添加了方便聚合的链接
    该好好整理一下自己了
  • 原文地址:https://www.cnblogs.com/alexfly/p/10251965.html
Copyright © 2011-2022 走看看