趙童鞋帶你入門PHP(三) PHP基礎語法

閱讀時長:10分鐘編程

技術預備:瞭解任意一門編程語言數組

經過上一篇的學習,相信童鞋們已經搭好了基本的PHP開發環境。bash

這篇開始就正式進入PHP的學習。數據結構

學習一門語言就確定避免不了學習他的語法了,可是童鞋們別怕,PHP的語法很是簡單。app

記得我剛開始接觸PHP的時候,看了兩個鐘的語法,就直接跑去修BUG。編程語言

後來就踏上了世界上最好的語言這條不歸路……函數

言歸正傳,下面開始今天的課程。學習

關於PHP的語法相信網上已經有許多教程了,像W3school、菜鳥教程等,一些很基礎的語法我就跳過了,主要講解一些和其餘語言不太同樣而且須要注意的地方。ui

在這裏我打算分幾個章節來說解PHP的基礎語法,其中第一章節講解普通變量和數組,第二章節講解運算符、函數和麪向對象,第三章節就……沒有了。spa

什麼??兩個章節就講完了?你不信PHP這麼簡單?你說你當初學Java基礎語法學了一個月?那就接着往下看吧。

1、普通變量

學習過Java或C語言之類的強類型語言的童鞋們應該很清楚,在這類語言中聲明變量必須註明變量類型

int a = 123;
String str = "HelloWorld";
a = str; // 若是進行跨類型賦值則會報錯
複製代碼

而像Javascript就是弱類型語言,也就是各個變量之間都是能夠相互賦值的,聲明變量只須要用一個var或者let關鍵字就能夠聲明一個變量。

var a = 123;
var str = "HelloWorld";
a = str;// 弱類型語言能夠跨類型賦值
複製代碼

PHP一樣是弱類型語言,聰明的童鞋們已經想到了,那他聲明變量也應該像JS同樣加一個var之類的關鍵字去聲明吧。

答案是

沒有!!!

沒有!!!

沒有!!!

PHP的變量只須要使用$符號開頭,直接賦值就能使用,徹底不須要聲明。

$a = 123;
$str1 = "HelloWorld";
$str2 = 'demo1';
$a = $str2;
複製代碼

而其中的字符串類型也比較有特色,若是見過PHP代碼的童鞋常常會看到有的時候用雙引號,有的時候用單引號。

那麼他們有什麼區別呢?

其實若是僅僅是使用的話是沒有什麼區別的,惟一的區別就在於使用雙引號的時候,PHP會去解析其中的變量。

什麼意思呢?咱們來舉個栗子:

$str = "demo";

$a = 'qwe$str';
echo $a; // qwe$str

$b = "qwe$str";
echo $b; // qwedemo
複製代碼

PHP會將雙引號字符串中的$str變量解析成demo。

另外一個比較重要的點就是PHP中的字符串鏈接符。

很多有其餘語言基礎的PHP初學者常常會把PHP字符串鏈接寫成:

$str = "Hello"+"World";
複製代碼

是否是看上去沒問題?這樣運行起來但是會報錯的。

在PHP中,鏈接符是「.」,也就是要改爲:

$str = "Hello"."World";
複製代碼

這個坑在我剛學PHP時踩了太屢次了。

2、數組

若是有學過其餘語言的童鞋,應該對數組這種數據結構很熟悉了。在不少語言中,數組都是要先聲明固定長度,而後纔可使用的。

在PHP中,數組其實也是一個變量,也是用$符號開頭的一個標識符,並不須要聲明長度,直接賦值就能用。

普通數組(索引數組):

$array = [1,2,3,4,5];
複製代碼

而插入元素咱們可使用$array[] = 'a';$array['d']=>'door'; 語法來爲數組添加元素。

$array[] = 6;
$array[] = 7;
$array['hello'] = 'world';
var_dump($array); 
// [1,2,3,4,5,6,7,'hello'=>'world']
複製代碼

讀取的話,直接用下標就能讀取出來。

echo $array[1]; // 2
echo $array['hello']; // world
複製代碼

相應的,爲了知足不一樣的使用場景還發展出了列表(List)、隊列(Queue)、棧(Stack)、集合(Set)、字典(Map)。

在Java中,使用Map:

Map map=new HashMap();
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
複製代碼

在JS中,使用Map:

var m = new Map();
m.set(1, "black");
m.set(2, "red");
m.set("colors", 2);
複製代碼

那麼在PHP中須要怎麼定義這些數據結構呢?

答案是

沒有!!!

沒有!!!

沒有!!!

統統都沒有!!!

這時就有讀者提問了:「怎麼這PHP這麼菜,經常使用的數據結構都沒有實現?」

其實並非沒有實現,並且PHP已經把他們全部的功能集成到PHP的數組裏了。

那麼其餘數據結構就很容易了。

關聯數組(字典 Map):

$array = ['a'=>'apple','b'=>'banana'];
複製代碼

隊列(Queue):

經過內置函數array_shift()就能夠彈出第一個元素。

棧(Stack):

經過內置函數array_pop()就能夠彈出最後一個元素。

集合(Set):

經過內置函數array_rand()就能夠隨機返回一個元素。

數組還有許多的內置函數,能夠進行交集、並集、求和、排序、甚至是多維排序等。

是否是看起來很膩害?之後會有一個章節專門講解PHP的各類騷操做,那時咱們就帶你們看一下什麼叫多維排序。什麼?爲何會有這麼多騷操做?還不是產品XX逼出來的。

PHP的數組是我學過的全部語言中最強大的,如今各位童鞋們有沒有以爲PHP是世界上最好的語言呢?

3、小結

經過上述的講解,相信童鞋們已經知道PHP的變量和數組的用法了。

使用過其餘語言開發的童鞋,在代碼中確定會常常見到各類int、string、HashMap各類各樣的類型聲明。

但在PHP中就不存在這種狀況,所有都是統一使用$開頭的變量,各類變量都能進行自動的隱式轉換,開發者能更專一於本身的邏輯而不是複雜的語法。

在這裏留下一個懸念,PHP是怎麼作到各類類型都能相互比較,相互轉換的呢?這裏就涉及到了PHP底層的zval數據結構的實現了,咱們會在之後的文章中再深刻的回到這裏。

----- End -----

更多好文

請掃描下面二維碼

歡迎關注~

相關文章
相關標籤/搜索