阅读时长:10分钟
技术预备:了解任意一门编程语言
通过上一篇的学习,相信童鞋们已经搭好了基本的PHP开发环境。
这篇开始就正式进入PHP的学习。
学习一门语言就肯定避免不了学习他的语法了,但是童鞋们别怕,PHP的语法非常简单。
记得我刚开始接触PHP的时候,看了两个钟的语法,就直接跑去修BUG。
后来就踏上了世界上最好的语言这条不归路……
言归正传,下面开始今天的课程。
关于PHP的语法相信网上已经有许多教程了,像W3school、菜鸟教程等,一些很基础的语法我就跳过了,主要讲解一些和其他语言不太一样并且需要注意的地方。
在这里我打算分几个章节来讲解PHP的基础语法,其中第一章节讲解普通变量和数组,第二章节讲解运算符、函数和面向对象,第三章节就……没有了。
什么??两个章节就讲完了?你不信PHP这么简单?你说你当初学Java基础语法学了一个月?那就接着往下看吧。
一、普通变量
学习过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时踩了太多次了。
二、数组
如果有学过其他语言的童鞋,应该对数组这种数据结构很熟悉了。在很多语言中,数组都是要先声明固定长度,然后才可以使用的。
在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是世界上最好的语言呢?
三、小结
通过上述的讲解,相信童鞋们已经知道PHP的变量和数组的用法了。
使用过其他语言开发的童鞋,在代码中肯定会经常见到各种int、string、HashMap各种各样的类型声明。
但在PHP中就不存在这种情况,全部都是统一使用$开头的变量,各种变量都能进行自动的隐式转换,开发者能更专注于自己的逻辑而不是复杂的语法。
在这里留下一个悬念,PHP是怎么做到各种类型都能相互比较,相互转换的呢?这里就涉及到了PHP底层的zval数据结构的实现了,我们会在以后的文章中再深入的回到这里。
----- End -----
更多好文
请扫描下面二维码
欢迎关注~