阅读时长:10分钟编程
技术预备:了解任意一门编程语言数组
经过上一篇的学习,相信童鞋们已经搭好了基本的PHP开发环境。bash
这篇开始就正式进入PHP的学习。数据结构
学习一门语言就确定避免不了学习他的语法了,可是童鞋们别怕,PHP的语法很是简单。app
记得我刚开始接触PHP的时候,看了两个钟的语法,就直接跑去修BUG。编程语言
后来就踏上了世界上最好的语言这条不归路……函数
言归正传,下面开始今天的课程。学习
关于PHP的语法相信网上已经有许多教程了,像W3school、菜鸟教程等,一些很基础的语法我就跳过了,主要讲解一些和其余语言不太同样而且须要注意的地方。ui
在这里我打算分几个章节来说解PHP的基础语法,其中第一章节讲解普通变量和数组,第二章节讲解运算符、函数和面向对象,第三章节就……没有了。spa
什么??两个章节就讲完了?你不信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 -----
更多好文
请扫描下面二维码
欢迎关注~