PHP基础笔记

avatar
作者
筋斗云
阅读量:0

基础课文档

现在是2023年9月,本系列课程基于php8

学习网站推荐:
PHP 教程 (w3school.com.cn)
PHP 教程 | 菜鸟教程 (runoob.com)

关于php

  • PHP 是 “PHP Hypertext Preprocessor” 的首字母缩略词

  • PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。

  • PHP 是开源免费的,并且使用广泛 , 可供免费下载和使用,可商用

  • PHP 脚本在服务器上执行

  • PHP 是解释型语言,按顺序从上往下执行,无需编译,直接运行

  • 它强大到足以成为在网络上最大的博客系统的核心(WordPress)!

  • 它深邃到足以运行最大的社交网络(facebook)!

  • 而它的易用程度足以成为初学者的首选服务器端语言!

什么是 PHP 文件?

  • PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码
  • PHP 文件的后缀是 “.php”
  • PHP 代码在服务器上执行,而结果以纯文本返回浏览器

PHP 能够做什么?

  • PHP 能够生成动态页面内容 (Html页面渲染)
  • PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件 (文件操作)
  • PHP 能够接收表单数据 (例如注册登录)
  • PHP 能够发送并取回 cookies (记录用户状态等信息)
  • PHP 能够添加、删除、修改数据库中的数据 (数据操作)
  • PHP 能够限制用户访问网站中的某些页面 (权限管理)
  • PHP 能够对数据进行加密和压缩
  • PHP 通常用于小程序 app 浏览器插件等的后端服务接口

通过 PHP,您可以不受限于只输出 HTML。您还能够输出图像、PDF 文件、甚至 Flash 影片。您也可以输出任何文本,比如 XHTML 和 XML。

为什么使用 PHP?

  • PHP 是跨平台的,可运行于各种平台(Windows, Linux, Unix, Mac OS X 等等)
  • PHP 兼容几乎所有服务器(Apache,Nginx, IIS 等等)
  • PHP 支持多种数据库 (Mysql)
  • PHP 是免费的。请从官方 PHP 资源下载:php语法

    基础 PHP 语法

    PHP 脚本以<?php开头,以?>结尾:

    <?php // 此处是 PHP 代码 ?>  <?php // 此处是 PHP 代码 ?> 

    PHP 脚本可放置于文档中的任何位置,文件扩展名是 “.php”。
    PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码,注意: html js css可以写在php文件里运行,但php不能写在html js css文件里运行。

    PHP 语句以分号结尾(;)

    <!DOCTYPE html> <html> <body>  <h1>我的第一张 PHP 页面</h1>  <?php echo "Hello maoshu!"; ?>  </body> </html> 

    输出方法:echo 和 print

    不同点:

    • echo - 能够输出一个以上的字符串,英文逗号隔开
    • print - 只能输出一个字符串,并始终返回 1
    • echo 比 print 稍快,并且开销低
    <?php echo "<h2>猫叔123!</h2>"; echo "Hello world!<br>"; echo "Maoshu", " string", 1, " 2 "; ?> 

    相同点:

    • 都是一个语言结构,有无括号均可使用:echo 或 echo() print 或 print()

    注释

    注释不会被作为程序来读取和执行。它唯一的作用是供代码编辑者阅读(让别人阅读明白,提醒自己做过什么,特别是一些函数方法的用途等)

    <?php // 这是单行注释  # 这也是单行注释  /* 这是多行注释块 它横跨了 多行 随意换行没问题 echo '猫叔'; */ ?> 

    变量

    变量是存储信息的容器,有点类似初中数学里的代数 x=1,y=2

    $a=5; $_a = 5; $b=6; $c=$a+$b; echo $c; 

    =号并不是真实的等号,而是叫赋值

    变量命名规则
    • 变量以 $ 符号开头,其后是变量的名称
    • 变量名称必须以字母或下划线开头
    • 变量名称不能以数字开头,不能有空格
    • 变量名称只能包含字母 数字 字符和 下划线(A-z、0-9 以及 _)
    • 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)

    注释:PHP 变量名称对大小写敏感!

    推荐的几种命名方法:

    • 下划线命名法 $first_name = 'zhang';
    • 小驼峰命名法 $firstName = 'zhang';
    • 大驼峰命名法 $FirstName = 'zhang';
    $txt="Hello world!"; $a=5; $b=8.5; 

    不必告知 PHP 变量的数据类型,php会根据它的值,自动把变量转换为正确的数据类型

    变量也有作用域之分,等到后面函数的时候再说。

    空白符
    echo '猫叔  你在干什么  ?  ';  /**  我在  看抖音小姐姐   */ 

    大小写敏感

    所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感
    但是所有变量都对大小写敏感

    ECHO "Hello 猫叔!<br>"; echo "Hello 猫叔!<br>";  EcHo "Hello 猫叔!<br>"; PRint "Hello 猫叔!<br>"; 
    $color="red"; echo "My car is " . $color . "<br>"; echo "My house is " . $COLOR . "<br>"; 

    命令行的使用

    可以像python一样在命令行里运行php
    用cmd或者vscode插件

    可以获取用户输入的内容

    $input = readline("请输入内容:");  echo "您输入的内容是: " . $input; 
    echo "请输入内容:";  $input = fgets(STDIN);  echo "您输入的内容是: " . $input; 

    数据类型

    字符串、整数、浮点数、逻辑(布尔型)、数组、对象、NULL、资源类型
    用var_dump() 会返回变量的数据类型和值,一般用于开发调试时使用

    只获取数据类型 echo gettype($a);

    字符串

    字符串是字符序列,比如 “Hello world!”。

    字符串可以是引号内的任何文本,可以使用单引号或双引号
    注意双引号和单引号的区别

    $x = "Hello world!"; echo $x; echo "<br>";  $x = 'Hello world!'; var_dump($x); 

    整数

    和数学里的整数有些区别

    • 整数必须有至少一个数字(0-9)
    • 整数不能包含逗号或空格
    • 整数不能有小数点
    • 整数正负均可
    • 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
    $x = 5985; var_dump($x); echo "<br>";  $x = -345; // 负数 var_dump($x); echo "<br>";  $x = 0x8C; // 十六进制数 var_dump($x); echo "<br>"; $x = 047; // 八进制数 var_dump($x); 

    浮点数

    浮点数是有小数点或指数形式的数字

    $x = 10.365; var_dump($x); echo "<br>";  $x = 2.4e3; var_dump($x); echo "<br>";  $x = 8E-5; var_dump($x); 

    逻辑(布尔值)

    $x=true; $y=false; 

    数组

    在一个变量中存储多个值
    分为一维数组和多维数组,认识即可,不要深究,后面会专门讲

    $cars=array("Volvo","BMW","SAAB"); $_cars=["Volvo","BMW","SAAB"]; var_dump($cars); var_dump($_cars); 

    对象

    需要用到类和封装的知识
    等学到类的时候再讲

    Null

    特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值
    注意:可以通过设置变量值为 NULL 来清空变量数据

    $x="Hello world!";  var_dump($x);  $x=null;  var_dump($x);  

    resource 资源类型

    等学到数据库的时候再讲

    初级实战 - 个人博客的开头部分

    实战目标:
    html简单介绍
    复习变量声明和输出
    复习注释
    了解变量重复赋值

    EOF(heredoc) 定界符使用说明

    • 以<<<EOF开始标记开始,以EOF结束标记结束

    • 结束标记必须顶头写,独自占一行,不能有缩进和空格

    • 在结束标记末尾要有分号

    • EOF可以用任意其它字符代替,开始标记和结束标记相同即可,比如常用大写的EOT、EOD、EOF来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。

    • 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符.或,来拼接

    • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义。

    <?php $name="变量会被解析"; $a=<<<EOF $name<br> 看上面的name已经不是name啦!!!<br> EOF; echo $a;  echo '<hr>';  $a=<<<EOF <a>html格式会被解析</a><br/>你看看a标签显示了没? 你看看br显示了没? <br> EOF; echo $a;  echo '<hr>';  echo <<<EOF "双引号外所有被排列好的格式都会被保留"  "但是双引号内会保留转义符的转义效果,比如table:\t和换行:\n下一行"  你看页面里有\t吗? \n \t 和引号没关系吧?  那单'引'号呢?'\t \n 是否能看到?' EOF; 

    运算符

    注:资料来源于菜鸟教程 www.runoob.com

    算术运算符

    ![[Pasted image 20230922152416.png]]

    <?php  $x=10;  $y=6; echo ($x + $y); // 输出16 echo '<br>';  // 换行   echo ($x - $y); // 输出4 echo '<br>';  // 换行   echo ($x * $y); // 输出60 echo '<br>';  // 换行   echo ($x / $y); // 输出1.6666666666667 echo '<br>';  // 换行   echo ($x % $y); // 输出4 echo '<br>';  // 换行   echo -$x;  //整数之间的整除,参数也必须是整数,向下取整 var_dump(intdiv(10, 3)); ?> 

    赋值运算符

    ![[Pasted image 20230922155033.png]]

    <?php  $x=10;  echo $x; // 输出10   $y=20;  $y += 100; $y = $y + 100; echo $y; // 输出120   $z=50; $z -= 25; echo $z; // 输出25   $i=5; $i *= 6; echo $i; // 输出30   $j=10; $j /= 5; echo $j; // 输出2   $k=15; $k %= 4; echo $k; // 输出3 ?> 

    递增/递减运算符

    ![[Pasted image 20230922160114.png]]

    <?php $x=10;  echo ++$x; // 输出11   $y=10;  echo $y++; // 输出10   $z=5; echo --$z; // 输出4   $i=5; echo $i--; // 输出5 ?> 

    比较运算符

    ![[Pasted image 20230922160145.png]]

    <?php $x=100;  $y="100";   var_dump($x == $y); echo "<br>"; var_dump($x === $y); echo "<br>"; var_dump($x != $y); echo "<br>"; var_dump($x !== $y); echo "<br>";   $a=50; $b=90;   var_dump($a > $b); echo "<br>"; var_dump($a < $b); ?> 

    逻辑运算符

    ![[Pasted image 20230922160442.png]]

    and 和 && 的区别, or 和 || 的区别

    主要体现在优先级:

    • && 运算符的优先级比 and 运算符高。
    • 这意味着,在一个表达式中, && 运算符会先被执行,然后才是 and 运算符。
    <?php  // 在表达式中使用&&运算符 $bool = true && false;   // 显示&&运算符的运算结果 echo "&&运算符的结果为:"; if($bool){         echo 'true'; } else{         echo 'false'; }  echo '----'; // 在表达式中使用and运算符 $bool = true and false;  // 显示and运算符的运算结果 echo "and运算符的结果为:"; if($bool){         echo 'true'; } else{         echo 'false'; } ?> 
    阻断效果
    //or-前面语句值为真,or后面不执行;否则,执行 $result = 0 or var_dump('执行我的语句');  //输出-执行我的语句 var_dump($result);  //int 0 $result = 2 or var_dump('执行我的语句');  //不输出 var_dump($result);  //int 2 

    条件语句 (条件分支)

    if语句

    仅当指定条件成立时执行代码

    if (条件) {         条件成立时要执行的代码; }  
    if…else…语句

    在条件成立时执行一块代码,条件不成立时执行另一块代码

    if (条件) {           条件成立时执行的代码;  }   else   {           条件不成立时执行的代码;   } 
    if…elseif…else
    if (条件) {         if条件成立时执行的代码; } elseif (条件) {         elseif条件成立时执行的代码; } elseif (条件) {         elseif条件成立时执行的代码; } else {         条件不成立时执行的代码; } 
    switch

    注意:break很重要,不要漏掉

    <?php switch (n) {     	case label1: 	    如果 n=label1,此处代码将执行; 	    break; 	case label2: 	    如果 n=label2,此处代码将执行; 	    break; 	default: 	    如果 n 既不等于 label1 也不等于 label2,此处代码将执行; } ?> 

    什么时候适合用switch?
    适合条件比较多,并且条件单一固定值匹配时用

    循环

    让相同的代码块一次又一次地重复运行

    for 循环

    用于预先知道脚本需要运行的次数的情况

    for (初始值; 条件; 增量) {         要执行的代码(叫循环体); } 

    参数:

    • 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
    • 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
    • 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。

    注释:上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。

    for ($i=1,$j=0; $i<=5; ) {         echo "数字为 " . $i.$j . PHP_EOL;     $i++; } 

    while 循环

    只要指定的条件成立,则循环执行代码块,直到指定的条件不成立

    while (条件) {         要执行的代码; } 

    注意避免死循环

    $i=1; while($i<=5) {         echo "The number is " . $i . "<br>";     $i++; } 

    do…while

    语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环

    do {         要执行的代码; } while (条件); 
    $i=1; do {         $i++;     echo "The number is " . $i . "<br>"; } while ($i<=5); 

    continue和break

    continue
      for ($i=0; $i < 5; $i++) {          if($i == 3){             continue;     }     echo $i;   } 
    break
    for ($i=0; $i < 5; $i++) {          if($i>3){             break;     }     echo $i; } 
    break 2
    for ($i = 0; $i < 3; $i++) {             echo "外层循环: " . $i . "<br>";              for ($j = 0; $j < 5; $j++) {                 echo "内层循环: " . $j . "<br>";                      if ($j == 2) {                     break 2; // 跳出两层循环             }         }  }  echo '已跳出全部循环'; 
    在while中使用continue break和break2
        $a = 10;     while ($a <= 20) {             $a++;          if($a == 15){                 //continue;             break;         }          echo $a.'---';     } 
        $a = 10;     while ($a <= 20) {             $a++;          if($a == 15){                 for ($i=0; $i < 5; $i++) {                      if($i==3){                         break 2;                 }                 echo '<br>'.$i.'<br>';             }         }          echo $a.'---';     } 

    foreach 循环

    用于遍历数组,等学数组一起讲

    数组

    数组能够在单个变量中存储多个值,并且可以根据 键 访问其中的 值

    数值数组
    $maoshu = array("猫叔1","猫叔2","猫叔3","猫叔4","猫叔5"); $maoshu = ["猫叔1","猫叔2","猫叔3","猫叔4","猫叔5"];  var_dump($maoshu[1]); var_dump($maoshu[5]);  
    $maoshu2 = []; $maoshu2[3] = '3';  var_dump($maoshu2); 

    关联数组

    关联数组是使用您分配给数组的指定的键的数组

    $age=["maoshu"=>"35","dong"=>"37"];  //或者  $age['maoshu']="35";   $age['dong']="37"; 

    获取数组的长度 - count() 函数

    echo count($maoshu); 

    遍历数组

    for($i=0;$i<count($maoshu);$i++) {     	echo $maoshu[$i]; 	echo "<br>";  }  foreach ($maoshu as $value) {         要执行代码; }  foreach ($maoshu as $key => $value) {         要执行代码; } 

    for可以,while也可以,但最常用的是foreach

    多维数组

    多维数组是包含一个或多个数组的数组

      $maoshuArr = [     [         "免费课"=>[             "猫叔课",             "php",             "python"         ],         "体验课"=>[             "php",             "js",             "vue"         ]     ],     [         "收费课"=>[             "油猴脚本",             "浏览器插件",             "666"         ]     ]   ];    print_r( $maoshuArr ); 
     $maoshuArr = [    "test" => [         "免费课"=>[             "猫叔课",             "php",             "python",         ],         "体验课"=>[             "php",             "js",             "vue",         ]     ],    "product" => [         "免费课"=>[             "产品1",             "产品2",         ],         "体验课"=>[             "产品3",             "产品4",         ]     ]   ];    print_r( $maoshuArr ); 

    遍历多维数组

    foreach ($maoshu as $key => $value) {         要执行代码; 	foreach ($value as $kk => $vv) 	{     	    要执行代码; 	} } 

    初级实战2 - 个人博客的开头部分

    实战目标:

    • 复习运算符的使用
    • 复习条件语句的使用
    • 复习循环
    • 学会使用数组

    任务:
    循环数组:输出顶部导航栏,输出博客标题和时间
    条件语句:如果为第一个导航,则给出突出显示
    运算:输出数字的大小从大到小排列

    函数

    函数是一段可重复使用的代码块,可以将一系列操作封装起来,使代码更加模块化、可维护和可重用,来大大节省我们的开发时间和代码量,提高编程效率。

    内置函数

    内置函数有很多,之前学的print_r() count() 就是一个内置函数,
    获取当前时间 time(),date(‘Y-m-d H:i:s’)

    这节我们主要讲自定义函数

    创建(定义)函数 和 调用

    PHP 函数准则:

    • 函数的名称应该提示出它的功能
    • 函数名称以字母或下划线开头(不能以数字开头)
    function functionName() {      // 要执行的代码  } //调用 functionName(); 
    function test(){         echo '我的名字是:写代码的猫叔'; }  test();  // 获取当前的时间 function nowTime(){     	echo date('Y-m-d H:i:s'); }  nowTime(); 

    添加参数

    为了给函数添加更多的功能,我们可以添加参数,参数类似变量

    function myName($name){     	echo "我的名字是:$name"; }  myName("猫叔"); 
    // 获取当前的时间 function nowTime($type){         if($type=="time"){             echo date('Y-m-d H:i:s');     }     else if($type==

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!