PHP基础

这篇博客详细介绍了PHP的基础知识,包括基本语法、变量、常量、运算符、流程控制等。讲解了PHP如何与HTML混编,以及PHP的弱类型比较特性,特别是字符串与数字比较的潜在问题。还提到了PHP的注释、赋值运算符、流程控制语句等核心概念。
摘要由CSDN通过智能技术生成

PHP

一门编程语言

运行在服务器端

专门用户开发网站的

脚本后缀名.php

与HTML语言进行混编,脚本后缀依然是.php

解释型语言,不要编译直接运行

PHP运行需要环境:Windows phpstudy

PHP 基本语法

PHP可以和HTML混编,混编时需要用PHP 语言标记

开始标记 <?php

结束标记 ?>

特点:

  1. <?php ?>这之间就表示进入PHP模式,在开始和结束处之外的内容都会被PHP解析器忽略
  2. 可以直接嵌入到html代码中,并且可以嵌入到html代码中的任何地方
  3. 在一个html文档中可以嵌入任意多个PHP标记
  4. 文件末尾的PHP代码结束标记可以不要,在一些情况下省略掉更好

指令分隔符 [;]

一个php语句必须(建议)要用分号结束

注释(和C语言类似)

单行注释 //

多行注释 /* */

注意

PHP代码中注释,不会显示在浏览器的源代码中

PHP运行环境是服务器,我们浏览器看到的是PHP引擎运行PHP代码后的执行结果

PHP脚本是顺序执行的

简单的PHP语句

  1. phpinfo(); PHP探针
  2. echo 用于输出简单的变量
  3. var_dump(); 用于输出变量值及其变量类型
<?php 
	echo "This is var.php";
	echo "<hr />";
	echo "<span style='color:pink;background-color:blue;'>123</span>";
?>

image-20210718155548295

变量

变量的声明

不需要声明变量,但要初始化 → 给变量初次赋值,或者变量的默认值

一个变量没有初始化,内存中就没有这个变量

赋值

通过[=]赋值

引用赋值 KaTeX parse error: Expected 'EOF', got '&' at position 4: c =&̲a,相当于给 a 起 了 一 个 别 名 , a起了一个别名, ac值的改变,$a也随之改变

unset(变量) → 释放变量

变量的命名

  1. 以$符号开头

  2. 严格区分大小写

  3. 可以用字母、数字、下划线,不能以数字开头

    $name1

    $my_name

    $_my_name

    $1_name → 错误

  4. 尽量不要使用php关键字作为变量名

可变变量 —— 双$问题

<?php
    $name="hello";
    $$name="world";
    echo $name; //输出 hello
    echo $$name; //输出 world
    echo $hello; //输出 world  $$name=$hello
?>

$name = hello,$$name = $($name) = $hello = world

变量的类型

  • int 存储整数

  • float 存储小数 3.14

  • str 字符串

    字符串的定义

    1. ‘ ’

    2. “ ”

    3. 定界符

      echo <<<EOF
      	    This is EOF
      EOF; //This is EOF
      

    注意:

    1. 单引号定义的字符串中出现单引号要转义[\’]

    2. 单引号定义的字符串中,[$] 符号原样输出

      $name = "ASD";
      $str = '$ASD is my name';
      echo $str; //$A is my name
      
    3. 双引号定义的字符串中,[$] 是变量的开始,整体变量名需要用{}括起来

      $name = "ASD";
      $str = "{$A} is my name";
      echo $str; //ASD is my name
      
    4. 单双引号定义的字符串中输入的特殊字符包括[’,",$…]需要转义

    5. 定界符开始和结束后面不能有任何字符包括空白字符和注释

  • 布尔类型 true和false (弱类型比较
    以下所有内容会被当做false,其他均会被认为true

    • 布尔值false
    • 0,使用科学计数法0e…时也被认作为0
    • 浮点型0.0
    • 空白字符串和字符串0
    • 没有成员的数组
    • NULL
  • 数组

  • 对象

常量

定义方式

define("NAME","GGG");
echo NAME; //GGG

预定义常量

常量名常量值
__FILE __当前PHP文件的文件名和路径
__LINE__该常量名代码的行数
__FUNCTION__当前的函数名
__CLASS__当前的类名
__METHOD__当前的对象的方法名
PHP_OSPHP运行环境
PHP_VERSION当前的PHP服务器的版本
DIRECTORY_SEPARATOR\或/ 根据操作系统决定目录的分隔符

运算符

算术运算符

+ - * / % ++ –

逻辑运算

非 !

与 and &&

或 or ||

异或 xor 不同为真,相同为假

与运算的优先级高于或运算

比较运算

比较参与运算的单元是否相同,相同为真,不同为假

==

弱类型比较

PHP是弱类型语言,使用[==]比较时会进行松散比较

在这里插入图片描述

测试

<?php
  var_dump(1=="1");
  var_dump(123=='123asd');
  var_dump("1"==true);
  var_dump("0"==false);
  var_dump(-1 == true);
  var_dump(true=="php");
  var_dump(0==NULL);
  var_dump(0=="php");
  var_dump(0=="");
  var_dump(NULL==false);
  var_dump(""==false);
  var_dump(array()==false);
  var_dump(array()==NULL);
?>

结果

在这里插入图片描述

字符串与数字进行比较的漏洞

例子1

var_dump(123=="123asd");//true
var_dump(123=="1234asd");//false
var_dump(123=="123asd1234");//true
var_dump("asdf1"==1) //false

在PHP中遇到数字与字符串进行松散比较时,会将字符串中前几位是数字且数字后面不是”.",“e"或"E"的子串转化为数字,与数字进行比较,如果相同则返回为true,不同返回为false,后面的所有字符串直接截断扔掉
例子2

var_dump(123=="123.5asd1234");//输出为false
var_dump(123=="123e5asd1234");//输出为false
var_dump(123=="123E5asd1234");//输出为false

如果字符串数字后面是”." , “e”, “E”,则会有其他结果。
"."为浮点数的标志,会将字符串的子串转化为浮点数。
"e"和"E"为科学计数法的标志,将字符串的子串转化为科学计数法。
所以比较出错。

=== → 比较两个变量的值和类型

>

>=

<

<=

!= → 对比时将两边转换为相同类型,如 1!= '1’返回false

!== → 对比时不转换两边类型

<> → 与!=同义

<、>、<=、>=都存在弱类型比较

字符串运算符

. 连接字符串echo “A”. “B” //AB

赋值运算符

=

+=

-=

*=

/=

%=

.=

其他运算符

[? :]三元运算符

$a = 10 > 20 ? 10 : 20

[`]将字符串当作命令执行

echo `whoami`;
echo `ping baidu.com`;

[@] 屏蔽错误代码解释的报错提示、警告

运算符的优先级

image-20210718170648481

流程控制

if(判断){语句块}

elseif(判断2){语句块2}

……

else{语句块n}


switch(变量){
case 条件1:
语句1
case 条件2:
语句2
……
case 条件n:
语句n
}


while(条件){
语句块
}


do{
语句块
}while(条件)


for(;😉{语句块}


特殊流程控制语句

  • break;
  • break 2; //跳出两层循环
  • continue;
  • exit([“String”]); //结束脚本
    …(img-PUcpz5TY-1626656653350)]

流程控制

if(判断){语句块}

elseif(判断2){语句块2}

……

else{语句块n}


switch(变量){
case 条件1:
语句1
case 条件2:
语句2
……
case 条件n:
语句n
}


while(条件){
语句块
}


do{
语句块
}while(条件)


for(;😉{语句块}


特殊流程控制语句

  • break;
  • break 2; //跳出两层循环
  • continue;
  • exit([“String”]); //结束脚本
  • die([“String”]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值