小言_互联网的博客

PHP学习笔记

326人阅读  评论(0)

目录

一. 简介

二. php语法

基础语法

字符串

数组

函数

超全局变量

常量

全局变量与局部变量


一. 简介

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码。其在服务端执行,结果以纯 HTML 形式返回给浏览器。

因为PHP是运行在服务端的语言,所以我们先要搭建一个web服务,然后在网站下面写php文件。

二. php语法

基础语法

php的语句都写在 <?php 语句 ?>中。语句必须以分号;结尾

注释符

  • //
  • #
  • /*多行注释*/

变量

  • 变量名:必须以$开头
  • 变量名:组成部分a-z A-Z 0-9 下划线,但是不能以数字开头
  • 变量名区分大小写(HTML不区分大小写)

变量类型

  • 整型:      -1 2 3 4                      integer
  • 浮点数:  就是小数  1.1  2.1      double
  • 字符串:  "www.baidu.com"       string
  • 布尔:      boolean ,即true和false
  • 数组:      array(...)
  • NULL:      空类型

isset和var_dump


  
  1. <?php
  2. $a = 'xcc';
  3. echo isset($a); #判断是否给变量赋值,是的话返回1,否则什么都不返回
  4. var_dump($a); #判断一个变量的类型和长度,并输出变量的值
  5. var_dump( isset($b))
  6. ?>

gettype  输出变量的类型


  
  1. <?php
  2. $a = 'xcc';
  3. echo gettype($a);
  4. ?>

运算符

和其他语言也差不多


  
  1. #数学运算符
  2. echo  "<br/>"     进行换行, echo默认不换行
  3. + - * /        加减乘除
  4. % 取余
  5. ++ --
  6. #比较运算符(返回boolean类型)
  7. > >= < <= != == 其他语言通用
  8. === 恒等于,值和数据类型都相同
  9. !==

变量++         先运算,再加1

++变量         先加1,再运算

$a++


  
  1. <?php
  2. $a = 1;
  3. $c = $a++; #先把a的值赋给c,再执行a加1,所以c的值为1,a的值为2
  4. echo $c; #输出1
  5. echo "<br/>";
  6. echo $a; #输出2
  7. ?>

++$a


  
  1. <?php
  2. $a = 1;
  3. $c = ++$a; #a的值先加1变成了2,再赋值给c,所以c和a的值都为2
  4. echo $c; #输出2
  5. echo "<br/>";
  6. echo $a; #输出2
  7. ?>

注意:python中没有++或者--这个运算符,只有 a+=1 这种

===和==

  • ===   恒等于,即值和数据类型都要相同才为真,否则false。对立的为 !==,恒不等于
  • ==     等于,只要值相同就是真 。对立的为 != ,不等于

  
  1. <?php
  2. $a = 22;
  3. $b = '22';
  4. var_dump($a==$b); #输出bool(true)
  5. echo "<hr/>";
  6. var_dump($a===$b); #输出bool(false)
  7. ?>

三元运算符

运算式?值1:值2      #如果运算式为真,则输出值1,否则输出值2

  
  1. <?php
  2. $a = 22;
  3. $b = 30;
  4. echo $a>$b? "yes": "no"
  5. ?>
  6. >>输出 no

逻辑运算符

  • &&  与,都为真,则为真(有一个假则为假)
  • ||     或,有一个真则为真
  • !   非,就是取反的意思

  
  1. <?php
  2. $a = true;
  3. $b = false;
  4. var_dump($a && $b); #输出bool(false)
  5. echo "<br/>";
  6. $a = false;
  7. $b = false;
  8. var_dump($a && $b); #输出bool(false)
  9. echo "<br/>";
  10. $a = true;
  11. $b = false;
  12. var_dump($a || $b); #输出bool(true)
  13. echo "<br/>";
  14. $a = true;
  15. var_dump(!$a); #输出bool(false)
  16. ?>

字符串运算符

php的字符串运算符是一个.号,就是将字符串就行拼接,像python中进行字符串拼接直接用+就可以了。


  
  1. <?php
  2. $a = "https://";
  3. $b = "www.baidu.com";
  4. $c = $a.$b; #php中不能用+号
  5. echo $c #输出https://www.baidu.com
  6. ?>

选择结构

1. if语句


  
  1. <?php
  2. $a = 3;
  3. if($a> 5){
  4. echo '哈哈';
  5. } else if($a> 4){
  6. echo '呵呵';
  7. } else{
  8. echo '嘿嘿';
  9. }
  10. echo "<hr/>";
  11. echo "结束";
  12. ?>

在python中则:


  
  1. if a>b:
  2.     print( 'xxx')

2. switch语句

很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。这正是 switch 语句的用途。


  
  1. switch (expression){
  2. case label1:
  3. expression = label1 时执行的代码 ;
  4. break; //跳出整个循环,不再执行下面的语句
  5. case label2:
  6. expression = label2 时执行的代码 ;
  7. break;
  8. default:
  9. 表达式的值不等于 label1 及 label2 时执行的代码;
  10. }

  
  1. <?php
  2. $a = 2;
  3. switch($a> 1){ #这里$a可以为变量,也可以为表达式(此时下面的 case后面也要跟着同样的表达式)
  4. case $a> 1:
  5. echo "a=1";
  6. echo "<hr/>";
  7. break;
  8. case 2:
  9. echo "a=2";
  10. echo "<hr/>";
  11. break;
  12. case 3:
  13. echo "a=3";
  14. echo "<hr/>";
  15. break;
  16. default: #以上都不满足则执行这里
  17. echo "a=?";
  18. break;
  19. }
  20. ?>

循环结构

1. while


  
  1. while(表达式){
  2. 语句;
  3. }

  
  1. <?php
  2. $a = 5;
  3. while($a< 10){
  4. print( '哈哈');
  5. $a++;
  6. echo '<br/>';
  7. }
  8. #输出5个'哈哈'
  9. ?>

2. for


  
  1. <?php
  2. for($a= 5;$a< 10;$a++){
  3. print( '哈哈'); #当$a小于10的时候执行这里面的语句,然后$a再加1,接着再判断$a是否小于10
  4. print( '<br/>');
  5. }
  6. ?>

3. do while


  
  1. <?php
  2. $a = 5;
  3. do{
  4. echo '哈哈';
  5. echo '<br/>';
  6. $a++;
  7. } while($a< 10); #先执行do里面的语句,再来while里面判断
  8. #输出5个"哈哈"
  9. ?>

while与do while的区别是:

  • while先判断再执行
  • do while先执行再判断

beak和continue区别(和python中的一样):

  • break:直接跳出整个循环
  • contine:只是跳出当次循环,然后返回开头继续接着下次循环

字符串

字符串可用单引号或者双引号包裹,但是在PHP中他们是有区别的

  • 单引号中不能引用变量;引入转义字符,转义字符不会转义
  • 双引号中引入变量,变量会被解析;引入转义字符,转义字符能够转义

  .号作为拼接符,拼接两个变量(字符串)


  
  1. <?php
  2. $a = "xzc";
  3. echo 'this is \n $a <br/>'; #不会解析变量,也不会对转义字符进行转义,换行符可以
  4. echo "this is \n $a <br/>";
  5. echo $a. ".df";
  6. ?>

字符串中常用方法

$a = "https://www.baidu.combaidu.com";

  • str_replace("baidu","jd",$a)                     将变量a中的"baidu"字符替换为成"jd",区分大小写
  • str_ireplace("Baidu","jd",$a)                    将变量a中的"baidu"字符替换为成"jd",不区分大小写

  • explode('.',$a)                                          以.号对变量就行分割开,然后返回一个数组
  • implode($arr,'连接符')                              把数组元素用连接符组合为一个字符串,连接符可以不要
  • trim($a)                                                    消除字符串的首尾空白字符,包括控制字符如换行回车等
  • ltrim($a)                                                   消除左边
  • rtrim($a)                                                   消除右边             

  • strlen(字符串)                                           获取字符串长度,英文占一个字符长度,中文占三个字符长度
  • mb_strlen(字符串,[编码形式])              获取字符串长度,此时中文就代表一个长度了
  • strpos($a,'bai')                                          查找"bai"这个字符首次出现的位置,即索引值(区分大小写),索引从0开始
  • stripos                                                       和上一一样,区分大小写
  • strrpos($a,'u')                                            查找"u"这个字符从右边开始出现的第一个位置(区分大小写)

  • strstr($a,"bai")                                           查找 "bai" 在变量a中是否存在,如果是,返回该字符串及后面剩余部分(区分大小写)
  • stristr                                                        和上一样,不区分大小写 
  • substr($a,6,4)                                           从第六位开始(0开始算),截取4个字符
  • strrchr($a,'d')                                            查找字符串d在变量a中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。


addslashes()

addslashes() 函数能够在预定义的字符前添加反斜杠进行转义。在sql中用的比较多,防止sql注入

预定义字符是:

  • 单引号(')
  • 双引号(")
  • 反斜杠(\)
  • NULL

  
  1. <?php
  2. $a = "who's you";
  3. echo addslashes($a); #输出who\'s you,自动对字符串中的单引号进行了转义
  4. ?>

htmlspecialchars()

htmlspecialchars() 函数把预定义的字符 "<" 、">" 、"&" 转换为 HTML 实体。这样可以防止xss攻击


  
  1. <?php
  2. $a = "<script>alert(/1/)</script>";
  3. #echo $a #输出这条肯定会弹窗的
  4. echo htmlspecialchars($a); #这里进行了转义处理,不会弹窗
  5. ?>

看下源码,<>被转换成了HTML实体,所以不能执行xss。


数组

数组能够在单个变量中存储多个值,并且您可以根据键访问其中的值。不能使用echo输出数组

在 PHP 中,array() 函数用于创建数组:

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组,索引默认从0开始
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

1. 数值数组


  
  1. <?php
  2. $arr1 = array( 'hello', 1, 2.1, False);
  3. print_r($arr1); #print_r或者var_dump打印数组
  4. echo '<br/>';
  5. var_dump($arr1)
  6. ?>

2. 关联数组

制定键的形式


  
  1. <?php
  2. $arr2 = array(
  3. 'aa'=> 'nihao',
  4. "bb"=> "hello",
  5. "cc"=> "hai",
  6. );
  7. print_r($arr2)
  8. ?>

遍历数组

php中可以使用foreach函数对数组进行遍历,如下使用foreach分别打印$arr1和$arr2中的键和值


  
  1. <?php
  2. $arr1 = array( 'hello', 1, 2.1, '北京');
  3. $arr2 = array(
  4. 'aa'=> 'nihao',
  5. "bb"=> "hello",
  6. "cc"=> "hai",
  7. );
  8. foreach($arr1 as $key => $value){
  9. echo $key. '---'.$value. '<br/>'; #echo输出默认不带换行
  10. }
  11. echo '<hr/>';
  12. foreach($arr2 as $key => $value){
  13. echo $key. '---'.$value. '<br/>'; #echo输出默认不带换行
  14. }
  15. ?>

数组的操作

$arr = array('a','vv','北京','上海');

  • $arr[]="曹县"                             数组最后边增加‘曹县’这个元素

  • unset($arr[索引值])                   删除索引所在值

  • $arr[1]=‘www.xcc.com’              将索引1所在的值改为xxxx

  • echo $arr1[0]                            输出键0对应的值
  • echo count($arr1)                     输出数组长度
  • array_key_exists('aa',$arr2)     查看数组$arr2中是否存在'aa'这个键,返回布尔型

  • n_array('hello',$arr2)                查看数组$arr2中是否存在'hello'这个值,返回布尔型

  • array_keys($arr2)                     输出数组$arr2中所有的键

函数

创建函数如下。函数的运行需要先调用

  • 函数的名称应该提示出它的功能
  • 函数名称以字母或下划线开头(不能以数字开头)

  
  1. <?php
  2. function 函数名()
  3. {
  4. // 要执行的代码
  5. }
  6. ?>

不带参数的函数


  
  1. <?php
  2. function aa(){
  3. echo 'https://www.baidu.com'; #分号结尾
  4. }
  5. aa() //调用函数
  6. ?>

带参数的函数

如下函数携带了连个参数


  
  1. <?php
  2. function aa($name,$age){
  3. echo 'my name is '.$name. ", i am $age "; #分号结尾
  4. }
  5. aa( '鲍勃', '13') //调用函数
  6. ?>

当需要函数的执行结果做另外的运算时,我们可以使用return将函数的结果进行返回

 超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。


  
  1. <?php
  2. var_dump($GLOBALS);
  3. ?>

输出结果如下

$_SERVER

输出一些服务端和客户端的信息


  
  1. <?php
  2. var_dump($_SERVER);
  3. var_dump($_SERVER[ "SERVER_ADDR"]);
  4. ?>

$_GET

get传参,相比大家都熟悉

如果没有进行get传参,则输出no get。否则对a和b进行传参,再输出


  
  1. <?php
  2. function getAdd($a,$b){
  3. return $a+$b;
  4. }
  5. if( empty($_GET)){
  6. echo "no get";
  7. } else{
  8. $x = $_GET[ "a"];
  9. $y = $_GET[ "b"];
  10. $c = getAdd($x,$y);
  11. echo $c;
  12. }
  13. ?>

常量

常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认为大小写敏感。传统上常量标识符总是大写的。

可以使用define来定义常量


  
  1. <?php
  2. define( 'xc', 3.1453);
  3. echo xc; //输出3.1453
  4. ?>

全局变量与局部变量

函数外定义的变量为全局变量,作用域在全局

函数内定义的变量为局部变量,默认作用于在函数内。函数内的变量可加global变成全局变量


转载:https://blog.csdn.net/qq_44159028/article/details/116895883
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场