赵童鞋带你入门PHP(三) PHP基础语法

阅读时长: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 -----

更多好文

请扫描下面二维码

欢迎关注~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值