php基础
PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己, PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
https://www.w3school.com.cn/php/index.asp
概述:PHP的文件名一定不能有中文,因为php的核心是面向服务器的,又因为服务器的路径是不允许有中文的。
PHP脚本语言,它的外层长的和html机构很像,php的外壳可以在页面的任何位置执行
<?php ?>
看下面的代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <?php echo "hello" ?> </body> </html>
此时我们在页面输入127.0.0.1/1.php可以看到
上面的代码是php文件,并不是html文件,与其说是html代码中使用了php代码,不如说是php代码利用html结构进行了辅助
即便是脱离了html的机构,也可以实现php代码的执行
php代码不能进行嵌套的
<?php echo 1+2; <?php echo 2+3?> ?>
这是错误的写法,此时浏览器会报错
注意:
- php的壳子可以在任意的地方进行使用,因为php本身就是一个脚本语言
- php不可以进行嵌套
- php会将文件扁平化后进行返回
echo输出函数
echo是“回声”的意思,但是在PHP语言中echo具有的是输出的含义
为什么说echo是一个输出函数?或者说为什么是函数
看下面的输出内容
<?php echo(1+3)?> 等价于 <?php echo 1+3?>
所以我们发现第一种输出是echo()内部填写表达式,我们认为()内部在执行这些表达式,所以把echo当做是函数
如果echo是函数,内部可以进行简单的表达式计算
<?php echo(1+3)?> //4 <?php echo(1,2,3)?> //报错 <?php echo( //报错 $a = 5; $b = 10; $a+$b; )?>
常见的三元运算符在其内部是可以进行输出的
<?php echo(4<5?"ture":"false")?>
如果多个echo一定要有分号隔开
<?php echo 1; echo 2; echo 3; ?>
echo可以输出哪些内容?
输出的基本类型值(数字,字符串,布尔值)
<?php echo "你好"; echo 123; echo true; ?>
如果输出的字符串是一个html的标签结构,则会识别这个结构并且输出
<?php echo "<h1>你好php</h1>" ?>
变量和连字符
JavaScript中定义一个变量使用的是var,php中定义一个变量是$;
<?php // 声明变量 $a = "麻辣鸡丁"; $b = "墨鱼仔"; // 通过连字符连起来a和b echo $a.$b; echo "<br/>"; echo "我喜欢吃$b,不喜欢吃{$a}" ?>
注意:
- php生命变量的关键字使用的是$,需要注意的是php中的变量没有声明提升;
- php中的连字符是“.”或者“{}”,根据使用场景的不同可以使用对应的连字符,比如.更适合两个变量之间直接拼接,{}更适合字符串中间拼接某个变量
<?php echo $a; $a = "麻辣鸡丁"; ?>
此时页面不会报错,也不会输出
运算符
JavaScript运算符和php是基本一样的,但是php有更多的运算符的拓展
<?php // 加 $a = 10; $b = 20; echo $a+$b; //30 echo "<br/>"; // 减法 $a = 20; $b = 10; echo $a - $b; //10 echo "<br/>"; // 乘法 $a = 20; $b = 10; echo $a * $b; //200 echo "<br/>"; // 除法 $a = 20; $b = 10; echo $a / $b; //2 echo "<br/>"; // 余数 $a = 20; $b = 10; echo $a % $b; //0 echo "<br/>"; // 逻辑与 $a = 20; $b = 10; echo $a && $b; //1 echo "<br/>"; // 逻辑或 $a = 20; $b = 10; echo $a || $b; //1 echo "<br/>"; // 逻辑非 $a = 20; echo !!$a; //1 echo "<br/>"; // 自增 $a = 20; echo ++$a; //21 ?>
逻辑与和逻辑或,返回的不是对应的结构而是实实在在的布尔值,然后通过隐式转换变成了1(true)或者空(false)
注意:
php中逻辑与和逻辑或运算跟JavaScript中的逻辑与和逻辑或运算得出的结果不同
在JavaScript中逻辑与的运算结果返回值为数值大的那个数,而逻辑或则是返回数值比较小的那个
函数
php中的函数是通过关键字function进行定义,和JavaScript一样
<?php function add($a,$b){ echo $a+$b; } add(1,2) ?>
和JavaScript不同的是函数的形参必须是$开头
函数也可以有声明的提升
<?php add(1,2); function add($a,$b){ echo $a+$b; } ?>
此时依然可以输出结果
注意:PHP函数的内部不能直接获取全局变量的值
<?php $a = 100; $b = 200; function add() { echo $a + $b; } add() ?>
此时我们会输出0,为什么会输出0呢?
我们可以用var_dump来查看这个a和b的值
<?php $a=1; $b=2; function add(){ var_dump($a,$b); }; add() ?>
此时我们会发现这两个值为null,所以 null+null=0,原因是因为php没有获取到这两个变量所以为null,
var_dump 函数作用是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.
所以我们需要使用global来确定从全局获取哪个值
<?php $a = 100; $b = 200; function add() { global $a; global $b; echo $a + $b; } add() ?>
循环语句
php中也有流程控制语句(循环语句和条件语句);
循环语句:for、while、do-while在PHP中都是支持的
第一种for循环
<?php for($i = 1; $i <= 10; $i++) { if($i % 2 == 0) { echo $i."是偶数"; echo "<br/>"; } else { echo $i."是奇数"; echo "<br/>"; } } ?>
第二种for循环
<?php for($i = 0; $i < 10; $i++){?> <p><?php echo $i?></p> <?php }?>
while循环
<?php $a = 10; while($a) { echo $a; echo "<br/>"; $a--; } ?>
do-while
<?php $a = 10; do{ $a--; echo $a; echo "<br/>"; }while($a) ?>
条件语句
PHP中的条件语句和JavaScript条件语句一样支持if和switch
if语句
<?php for($i = 1; $i <= 10; $i++) { if($i % 2 == 0) { echo $i."是偶数"; echo "<br/>"; } else { echo $i."是奇数"; echo "<br/>"; } } ?>
switch语句
<?php for($i = 10; $i > 0; $i--) { switch($i) { case $i% 2 == 0: echo $i."是偶数"; echo "<br/>"; break; case $i % 2 == 1: echo $i."是奇数"; echo "<br/>"; break; } } ?>
数组
PHP中定义数组的方式常用的有两种,分别是索引数组和关联数组
索引数组
<?php // 声明一个数组 $arr = array("hello",123,true); echo $arr[0] ?>
我们通过索引数组可以发现PHP和JavaScript定义数组的方式是不一样的,必须通过array函数进行定义
不可以直接进行字面量定义
下面的代码是错误的
$arr = ["马士兵",123,true]
输出的时候有两种:
第一种是echo
echo $arr[0]
但是echo有一个弊端,只能返回某一个值,如果想要echo整个数组,则返回的是一个array的字符串
echo $arr
查看数组的全貌可以使用print_r()函数来进行输出
print_r($arr)
方括号是数组的下标索引值,箭头指向的值对应下面的值
关联数组
第二种数组的定义方式是关联方式
<?php // 声明数组 $arr = array("name"=>"小明","age"=>18,"sex"=>"男"); print_r($arr) ?>
、
和对JavaScript的数组认知的不同的是关联方式定义的数组是一个自定义的key(下标索引值)
获取对应的参数也是通过方括号枚举对应的key得到的
<?php // 声明数组 $arr = array("name"=>"小明","age"=>18,"sex"=>"男"); print_r($arr); echo($arr["name"]) ?>
和我们认知的JavaScript的数组相似的地方是可以自定义索引值参数,中间可以跳过
<?php // 声明一个数组 $arr = array("hello",123,true); $arr[100] = '你好'; print_r($arr) ?>
获取数组的长度(length)
echo count($arr)
案例:
设置列表渲染数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <?php $arr=array("墨鱼仔","炭烧八爪鱼","深海小鱼","阳春湖大闸蟹") ?> <ul> <?php for($i=0;$i<count($arr);$i++) {?> <li> <?php echo $arr[$i] ?> </li> <?php } ?> </ul> </body> </html>
设置表格的隔行变色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style lang="css" scoped> .skyblue{ background-color: skyblue; } .pink{ background-color: pink; } table{ border-collapse: collapse; } tr td{ width: 100px; height: 50px; border: 1px solid #fff; } </style> </head> <body> <table> <?php for($i=0;$i<10;$i++) { ?> <tr <?php if($i%2==0){echo "class='skyblue'";}else{echo "class='pink'";}?>> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <?php }?> </table> </body> </html>