1. 程式人生 > >三篇文章帶你極速入門php(一)之語法

三篇文章帶你極速入門php(一)之語法

運行 引號 each 謝謝 接收 掌握 定義和使用 來吧 echo

本文適合閱讀用戶

  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);

輸出如下圖
技術分享圖片

//定義發生異常時觸發的函數
function error($str)
{
    echo "{$str}<br>";
    exit();
}

在""雙引號內,可以直接用花括號包裹起來一個變量,這樣在被調用的時候變量就會直接在字符串中替換為變量的值,單引號不可以
exit()方法讓整個程序結束

//用[]可以直接創建一個空的數組,然後一一賦值
$person1         = [];
$person1[‘name‘] = ‘高富帥‘;
$person1[‘sex‘]  = ‘男‘;

//也可以直接創建一個有值的數組
$person2 = [‘name‘ => ‘白富美‘, ‘sex‘ => ‘女‘];
//這是一個二維數組,也可以用同樣的方式創建更多維的數組
$persons = [$person1, $person2];

既然是情景劇,得有個男女主角呀,打印出來看看這個二維數組,發現下標是從0開始的,不要奇怪所有編程語言都是這樣的
技術分享圖片
接下來定義一個類,類可以暫時理解為一些數據和方法的集合,也就是我們的情景劇啦

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(‘片尾曲,撒花完結‘);
     }
  4. array()函數會返回一個數組,如果沒有參數就是一個空數組,也是創建數組的一個方式
  5. $this->actors[0][‘name‘],返回的是$this->actors的第一個成員的key為name的值
  6. foreach循環的第二種方式,as後邊如果是 $key=>$val 這種,就會把數組的鍵賦值給$key,值賦值給$val,比上一種多了key可以使用
    好啦,萬事俱備,現在讓它運行起來吧
$myphp = new MyPhp();
$myphp->actorJoin($persons);
$myphp->introduce();
$myphp->start();
$myphp->action();
$myphp->end();

new MyPhp()會創建一個MyPhp類型的類對象,讓一個變量指向這個對象,就可以對這個對象的成員變量和成員方法進行調用和改動了。
看看在瀏覽器上的輸出
技術分享圖片
改一改在命令行裏讓它動態跑一下看效果(怎麽弄的不重要)
技術分享圖片

好啦,回顧一下文章開頭的你會收獲到什麽,你都學會了嗎?
不要急,下一節會講搭建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();

三篇文章帶你極速入門php(一)之語法