三篇文章帶你極速入門php(一)之語法
本文適合閱讀用戶
- 有其他語言基礎的童鞋
- 看完w3cschool語法教程來回顧一下的童鞋(傳送門,想全面看一下php語法推薦這裏)
- 毫無基礎然而天資聰慧頗有慧根(不要左顧右看說的就是你,老夫這裏有一本《php從入門到放棄》,觀你根骨清奇10兩銀子賣給你如何)
看完本文後你會收獲到什麽
- php的變量的定義,使用
- 函數的定義,使用,傳遞參數
- 數組的定義,調用,常用方法,使用場景
- php中循環,判斷,選擇結構的語法
類的定義,成員變量和成員函數的定義和使用
相信我,認真看完本文,你就已經掌握了php常用的語法了,足以進行一些常規的開發,剩下的可以用到再學,避免在學了忘學了忘的語法坑中沈迷太久(??????)??
用php導演一場情景劇
這就是今天的目的,假設我們已經搭建好了環境(下一節會講),現在開始進行 編碼 創造世界。
首先定義一下我們的題目,myphp
//定義我們的題目
$title = "myphp";
php定義變量用$符號,php是弱類型變量語言,不區分變量的類型,""和它裏邊內容在一起表示一個字符串。 另外//表示註釋,就是解釋性的話,並不會作為代碼運行
//這個方法用來輸出
function show($str)
{
echo $str . "<br>";
}
再定義一個方法(也叫函數,只是叫法不一樣而已啦),定義方法用function關鍵字,括號裏的是參數,直接用變量表示就可以,在調用的時候接收調用時傳來的參數
echo
.是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}");
}
}
- 成員變量:成員變量直接用$符號聲明就可以,public private protected 是成員變量的訪問控制權限(同樣適用於成員方法),分別表示共有,私有,受保護的,null是php裏的空指針的關鍵字
- 成員方法:
- 有一些自帶的成員方法,比如構造函數__construct,php中__開頭(兩個下劃線)的函數都是默認自帶的函數,__construct是構造函數,初始化一個類對象的時候會調用這個方法
- 可以自己定義成員方法,如start這個方法,定義方法和普通方法一樣,控制權限和成員變量一樣也是public private protected三個
- 調用成員變量,如$this->music,註意此時成員變量不要加$符號。調用成員方法,如$this->start()
- 有一些自帶的成員方法,比如構造函數__construct,php中__開頭(兩個下劃線)的函數都是默認自帶的函數,__construct是構造函數,初始化一個類對象的時候會調用這個方法
- 時間和日期: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;
}
}
}
- empty()函數判斷數組是否為空,空返回true,也就是正確的意思,此處沒有else,代表如果不滿足if的條件,程序直接往下走,不運行大括號內的代碼。
- foreach循環遍歷數組,foreach($arr as $val),就是說對把$arr的所有成員依次賦值給$val,循環的次數就是$arr的長度
- switch語句針對同一地方不同值進行選擇,可以避免多次if else,性能和可讀性也更好
- switch後跟隨的括號表示選擇的變量
- case後的值和冒號後的代碼,表示對應值和要運行的代碼,註意要添加break,表示跳出本次判斷,不然代碼會繼續往下運行
- 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(‘片尾曲,撒花完結‘); }
- switch後跟隨的括號表示選擇的變量
- array()函數會返回一個數組,如果沒有參數就是一個空數組,也是創建數組的一個方式
- $this->actors[0][‘name‘],返回的是$this->actors的第一個成員的key為name的值
- 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(一)之語法