PHP 基础

初识PHP

  • 了解PHP 语言

PHP 语言标记

<h1>My Name is 123!</h1>
<script>
    console.log("This message is from info.php!")
</script>
<?php           // PHP 的开始标记,表示从此标记开始,进入PHP 模式。
    phpinfo();  // PHP 代码
                // PHP 的结束标记,表示从开始标记到结束标记,之间的内容是PHP 模式
                // 之后的内容依然被PHP 解释引擎认为是纯文本字符串。
?>

说明:

  • 在PHP 文件中,可以与HTML 和JavaScript 混编。
  • 开始标记<?php 表示进入PHP 模式,结束标记?>,标识退出PHP 模式。
  • PHP 模式之外的内容会被作为字符输出到浏览器中。
  • HTML 或JavaScript 对于PHP 来说就是纯文本字符串。
$str=<<<HTML
<h1>test.php</h1>
<script>
    console.log("This message is from test.php!");
</script>
HTML;
    echo $str;

安全问题:如果是一个在线的网站能够看到phpinfo 页面,说明存在敏感信息泄露漏洞,这个漏洞需要体现在后面的渗透测试报告中。

基础语法

指令分隔符

分号;,代表一句PHP 代码的结束。

注释

单行注释

phpinfo();  //  该函数会显示PHP 配置信息

多行注释

/*
    这是多行注释!
    以下语句表示PHP 配置信息
*/
phpinfo();

空白字符

空白符包括:

空白字符

表达

空格

<space>

TAB 制表符

\t

回车换行

\r\n

这些空白字符在PHP 中都是无关紧要的,可以将一个语句展开成任意行,或者紧缩在一行,空格与空行的合理运用可以增强代码的清晰性与可读性,如果运用不合理反而会对阅读产生负担!

但是,不能是用空白符打断PHP 的关键字,例如函数名,语句名,变量名,类名,方法名等等。

变量

  • 掌握PHP 语言中变量的命名
  • 掌握PHP 语言中字符串类型变量的定义

变量概述

变量在任何一门语言中都处于核心地位。

变量是用于临时存储值的容器,通过变量名能够访问到变量值,变量包含四个部分内容:

  • 变量名
  • 变量值
  • 数据类型
  • 内存空间

PHP 脚本语言是一种弱数据类型语言,变量或常量的数据类型由程序的上下文决定,给一个变量赋予什么样的值,就是什么数据类型。

变量声明与初始化

变量命名

变量名称组成:

$ + 变量名

变量名是严格区分大小写的。以下变量是完全不同的:

$name;
$Name;
$NAME;

变量名由字母、数字、下划线组成,并且不能以数字开头,也不能包含空白字符、特殊字符等其他字符。

$name = "Caliy";
$name1 = "Caliy";
$my_name = "123";
$_name = "321";
//$1name;
//$n@me;
//$nam$;

变量命名时,建议使用驼峰式命名法或者下划线命名法,做到变量名的"见名知意"。

$firstName;
$LastName;
$first_name;
$last_name;

PHP 中有一些标识符是系统定义的,也称为关键字,是PHP 语言的组成部分,因此不建议使用它们中的任何一个作为变量名,包括函数名,类名等。

$echo;      //建议不要使用

变量声明与初始化

直接赋值,直接使用。

echo $username;     // Notice: Undefined variable: username

$username = "Caliy";

echo $username;

变量释放

unset() 函数释放指定的变量。

$username = "Caliy";

echo $username;

unset($username);

echo $username;     //Notice: Undefined variable: username

可变变量

可变变量,一个变量的名字可以动态的设置和使用。$$ 是php 的特性,也是产生php 中变量覆盖漏洞的原因之一。

// $$.php

$username = "Caliy";
$CY = "I am from China!";

// echo $username;     // Caliy
// echo $Caliy;        // I am from China!
// echo $$username;    // I am from China!  $($username) -> $Caliy

$$username = "i love php!";
echo $Caliy;

变量类型

变量类型是指保存在该变量中的数据的数据类型,在计算机编程语言世界中每个数据都有它的类型。

具有相同类型的数据才能被彼此相互操作。

在强类型的语言中例如C 语言,变量要通过声明指定类型,然后才可以存储对应指定的数据,就好比现实生活中在制作一个柜子之前,就要决定好这个柜子的类型,是书柜那么以后就只能用来存书,是衣柜以后就只能用来存衣服。

但是PHP 是一种弱类型的语言,和其他语言不同的是,变量或者常量的数据类型由程序的上下文决定,不需要事先声明类型。一个柜子,要是往里面存书籍那么他就是书柜;要是往里面存放衣服,那么它就是衣柜,根本不需要事先说明这个是书柜还是衣柜,一切根据实际需要使用即可。

可以将数据的变量类型输出,使用的函数var_dump()。

// var_dump.php

$name   = "Caliy";      // string
$sex    = true;         // bool
$age    = 24;           // int
$score  = 59.9;         // float

// echo $name;
// echo $sex;           // 1
// var_dump($sex);
// var_dump($score);
var_dump($name);

bool

布尔类型,这个是最简单的类型,布尔型表达了true 或false,即真或假。

// bool.php

$a = true;
$b = false;

var_dump($b);

进行if 判断的时候,如果表达式不是bool 类型的值,会有类型转换,其他类型的值转换成布尔类型的值。大多数的值是被认为是true,少部分以下值被认为是false。

bool(false)
int(0)
float(0)
string(0)""
string(1)"0"
array(0){}
NULL

int

整型,存储整数。

$age = 24;
var_dump($age);

float

浮点型,也称double,指包含小数的数。

$score = 99.9;
var_dump($score);

string

字符串是有序的一系列字符。字符串可以使用单引号、双引号、定界符三种方法来定义。

单引号定义字符串:

  • 单引号定义的字符串中不能包含单引号,如果包含,需要转义\'。
     
  • 单引号中的变量不会被识别。
     
// string.php

$name = 'CY';
$msg = 'Welcome, ';

echo $msg.$name;        // . 运算符,在PHP 中代表字符串拼接。

双引号定义字符串:

  • 双引号中可以包含单引号,双引号中包含双引号,需要转义\"。
     
  • PHP 会解析双引号之间的变量,最好用{} 将变量名括起来。
     
// string.php

$username = "CY";

$message = "Welcome, {$username}";

echo $message;

定界符定义字符串:

  • 当需要定义输出大段字符串时,并且该字符串中有超多特殊字符,包括单引号,双引号等等。
  • 定界符定义的字符串中的单双引号,还有大部分特殊字符不需要进行转义。
  • 定界符开始标识符<<< + 标志,标志建议大写字母,并且具备一定的语义。
  • 定界符结束标示符标志 + ;,结束标识符之后,只能有换行回车。
  • 标志的命名规则,字母、数字、下划线,并且不能以数字开始。
  • 定界符中的$ 同样会识别成变量,变量名要用{} 括起来。
// string.php

$name = "Caliy";
$msg = <<<Caliy
<h1>My Name is <span style = "color:pink">{$name}</span>!</h1>
<script>
    console.log('This message is from info.php!')
</script>
Caliy;
echo $msg;

常量

常量是一个简单值的标示符,如其名称所暗示的。在PHP 脚本执行期间一个常量一旦被定义,就不能被改变或者取消定义,常量的作用域是全局,常量包含bool,int,float,string 类型的数据。

定义和使用

常量的命名与变量类似,也遵循PHP 标识符的名称规则,按照惯例常量标识符总是大写的。

// define.php

define("USERNAME", "Caliy");

// USERNAME = 'Caliy';
// unset("USERNAME");

echo USERNAME;

变量一般由$ 符号起头,常量一般大写。

预定义常量

PHP 已经定义好了,可以直接使用的常量,一般代表特殊的含义。魔术常量是预定义常量中比较特殊的一类。

常量名

常量值

__FILE__

当前的文件名,完整的路径。

__LINE__

当前行号

__FUNCTION__

当前的函数名

__CLASS__

当前的类名

__METHOD__

当前对象的方法名

PHP_OS

操作系统类型

PHP_VERSION

当前PHP 的版本

DIRECTORY_SEPARATOR

目录的分隔符。

运算符

  • 了解运算符
  • 掌握反引号和@ 符号用法

算术运算符

例子

名称

结果

-$a

取反

$a 的负值

$a + $b

加法

$a和$b 的和

$a - $b

减法

$a 和$b 的差

$a * $b

乘法

$a 和$b 的积

$a / $b

除法

$a 除以$b 的商

$a % $b

取模,取余

$a 除以$b 的余数

++ $a

前加

$a 的值加一,然后返回$a

$a++

后加

返回$a,然后将$a 的值加一

--$a

前减

$a 的值减一, 然后返回$a

$a--

后减

返回$a,然后将$a 的值减一

<meta charset = "utf-8">
<h1>算术运算符</h1>
<?php
$a = 10;
$b = 3;

// echo -$a;
// echo $a + $b;
// echo $a - $b;
// echo $a * $b;
// echo $a / $b;
// echo $a % $b;
// echo ++ $a;
// echo $a ++;
// echo -- $a;
echo $a--;

字符串运算符

字符串运算符完成的主要工作,就是字符串拼接。

在JS 语言中,字符串拼接用+,运算符. 的作用是访问对象中的属性或者方法。

PHP 中,使用. 进行字符串拼接。PHP 中. 也叫连接运算符。

<meta charset = "utf-8">
<h1>字符串连接符</h1>
<?php
$name = "Caliy";
$str = "Hello,".$name;
//$str = "Hello,"+$name;
var_dump($str);
?>

赋值运算符

左边的操作数必须是变量,右边可以是一个表达式,也可以是一个值,一个变量等等。

作用:将右边表达式的值赋给左边变量。

二元赋值运算符

例子

解释

=

+=

-=

*=

/=

%=

.=

<meta charset = "utf-8">
<h1>赋值运算符</h1>
<?php
$a = 10;
$b = 3;

// $a += $b; 
// $a -= $b;
// $a *= $b; 
// $a /= $b;
// $a %= $b;
$a .= $b;    103         

echo $a;

比较运算符

对操作数(按照比较运算符的要求,规则)进行比较后,得到返回值(boolean)。

如果比较出的结果满足比较运算符的要求那么结果就是true(真,成立,满足),否则就是false (假,不成立,不满足)。

例子

说明

备注

$a == $b

等于

$a === $b

全等

值相等并且数据类型相同

$a != $b

不等

$a <> $b

不等

$a !== $b

不全等

$a < $b

小于

$a > $b

大于

$a <= $b

小于等于

$a >= $b

大于等于

<meta charset = "utf-8">
<h1>比较运算符</h1>
<?php
$a = 5;
$b = 3;
$c = $a == $b;
$c = $a === $b;
$c = $a != $b;
$c = $a <> $b;
$c = $a !== $b;
$c = $a > $b;
$c = $a >= $b;
$c = $a < $b;
$c = $a <= $b;

var_dump($c);

?>

PHP 中规定:使用echo 输出布尔类型值的时候echo true; 它在页面中会输出1。echo false; 它会在页面中什么都不输出。建议使用var_dump() 来输出更明了的结果。

逻辑运算符

逻辑运算符

例子

解释

运算符法则

and
&&

$a and $b
$a && $b

逻辑"与"运算

有假则假

or
||

$a or $b
$a || $b

逻辑"或"运算

有真则真

xor

$a xor $b

逻辑"异或"运算

相同为假,不同为真。

!

!$a

逻辑"非"运算

<meta charset = "utf-8">
<h1>逻辑运算符</h1>
<?php
$a = true;
$b = false;
//var_dump($a);
//var_dump($b);
$c = ($a and $b);
$c = ($a && $b);
$c = ($a or $b);
$c = ($a || $b);
$c = ($a xor $b);
$c = !$a;

var_dump($c);
?>

其他运算符

如果,则

?:

取最大值 10

$a = 10;
$b = 20;
$max = $a > $b ? $a : $b;
echo $max;

反引号 、、

自动适配系统命令,调用系统命令。

// ``.php

$cmd = "whoami";
$cmd = "ipconfig";
$cmd = "net user";

echo "<pre>".`$cmd`;

@

屏蔽表达式可能发生的错误。

echo @$username;

PHP 流程控制

  • 了解PHP 流程控制过程
  • 掌握if,while,for 等流程控制语句的用法。

顺序执行

自上而下的执行即可,这也是PHP 语句的默认执行过程。对这个执行过程没有控制。

echo "This is first echo";
echo "<br />";
echo "This is second echo";
echo "<br />";
echo "This is third echo";

分支执行

分支执行可以根据表达式的值是否为True 来选择执行某些代码,PHP 的分支执行主要通过if 和switch 来实现。

if 语句

语言结构

if(){//判断条件,如果判断条件的返回值为True,则执行语句块1,否则执行语句块2
    //语句块1
}else{
    //语句块2
}

单向条件:

// if.php

$score = 59.9;
if($score >= 60 ){
    echo "congratulations";
}

双向条件:

// if.php

$score = 99.9;
if($score >= 60 ){
    echo "congratulations";
}else{
    echo "Sorry, you may need help!";
}

多向条件:成绩定级脚本。

switch 语句

功能与if 语句类似,当需要多向分支结构时,并且判断条件是具体的某个值,此时大多使用switch 结构。

$day = 8;

switch($day){
    case 1:
        echo "Monday";
        break;
    case 2 :
        echo "Tuesday";
        break;
    case 3 :
        echo "Wednesday";
        break;
    case 4 :
        echo "Thursday";
        break;
    case 5:
        echo "Friday";
        break;
    case 6:
    case 7:
        echo "Weekend!";
        break;
    default:
        echo "Error!";
}

注意:

  • 表达式的值最好是整形或者字符串。
  • 不要忘记break 语句,用来跳出switch 语句。每个case 语句后面都加上break。
  • 如果某个case 语句后面并没有接语句块,那么就说明这个语句块的内容是同下。
  • case 后面的语句块是不需要{} 括起来的。

判断条件 if

在编写if 语句时,要求判断条件是一个布尔类型的值。但是实际应用中,是无法保障这一点。如果判断条件是非布尔类型的值,就需要强制转换成布尔类型的值。如下:

// if.php

$flag = 0;
$flag = 0.0;
$flag = "";
$flag = "0";
$flag = array();
$flag = NULL;
$flag = "Caliy";
$flag = true;
$flag = 24;
$flag = 59.9;

if($flag){
    echo var_dump($flag)." means Ture"; 
}else{
    echo var_dump($flag)." means False"; 
}

循环执行

计算机最擅长的功能之一就是按照规定的条件,重复执行某些操作,这是程序设计中最能发挥计算机特长的程序结构。

while

语言结构

while(表达式){//当表达式的值为真的时候,执行循环体。
    //循环体
}

当表达式的值为true,就执行下面的循环体。当循环体执行结束之后,继续判断表达式的值是true 还是false,如果还是true,那么就继续执行循环体。直到,这个表达式的值为false,那么这个while 语句就执行结束了。

例子:输出1 到100 数字。

// while.php

$a = 1;

while ($a <= 100) {
    echo $a."<br />";
    $a ++;
}

do while

//  do-while.php

$a = 1;

do{
    echo $a."<br />";
    $a ++;
}while ($a <= 10);

for

语法格式。

for(;;){//计数器;判断条件;自增或自减
    //循环体
}

例子:输出1 到1000 数字。

// for.php

for ($i=0; $i < 1000 ; $i++) { 
    echo $i."<br />";
}

特殊流程

break

break 用于switch,for,while,do...while,foreach 等的中断。后面可以接上一个数字来表示跳出几层循环。默认不加就是跳出当前循环语句。

// break.php

for ($i=1; $i <= 100; $i++) { 
    if ($i % 17 == 0) {
       break;
    }
    echo $i."<br />";
}

echo "PHP is DONE!";

continue

continue 只能用在循环语句,轮空本次循环,并不是结束整个循环语句。

//  continue.php

for ($i=1; $i <= 100; $i++) { 
    if ($i % 17 == 0) {
       continue;
    }
    echo $i."<br />";
}

echo "PHP is DONE!";

exit

exit 表示结束当前整个PHP 脚本的执行。同die() 语句。

// exit.php

for ($i=1; $i <= 100; $i++) { 
    if ($i % 17 == 0) {
        // exit;
        // exit("PHP is OVER");
        // die("PHP is OVER");
        die();
    }
    echo $i."<br />";
}

echo "PHP is DONE!";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/557199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 项目Docker部署三种方式

一种&#xff1a;直接拷贝jar到服务器部署 1.增加docker配置文件 新建Dockerfile文件&#xff0c;负责Docker的配置 FROM openjdk:21#ENV timezone RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo Asia/Shanghai >/etc/timezone# WORKD…

TCP和UDP协议的区别

1、定义 TCP协议的全称是Transmission Control Protocol&#xff08;传输控制协议&#xff09;&#xff0c;是一种面向连接的点对点的传输层协议。 UDP协议的全称是User Datagram Protocal&#xff08;用户数据报协议&#xff09;&#xff0c;为应用程序提供一种无需建立连接…

OpenHarmony音频和音乐编码格式—vorbis

简介 一种通用音频和音乐编码格式。 Vorbis编解码器规范属于公共领域。所有技术细节都已发布并记录&#xff0c;任何软件实体都可以充分利用该格式&#xff0c;而无需支付许可费、版税或专利问题。 下载安装 直接在OpenHarmony-SIG仓中搜索vorbis并下载。 使用说明 以OpenHa…

Qt6之QScopedPointer——智能指针

手动管理堆分配的对象困难且容易出错&#xff0c;当指针场景复杂时&#xff0c;手动delete难免出错&#xff0c;常见的结果是代码泄漏内存并且难以维护。是时候使用现代和安全的一些方法了&#xff0c;那就是使用智能指针&#xff0c;比如 QScopedPointer 或 std::unique_ptr&a…

idea新建一个springboot项目

本文分为几个部分&#xff0c; 首先是在idea中新建项目&#xff0c; 然后是配置 项目的目录&#xff08;新建controller、service、dao等&#xff09;&#xff0c; 然后是自定义的一些工具类&#xff08;比如启动后打印地址等&#xff09;。 1.、创建篇 新建项目&#xff0…

分享|视频号带货如何运营才能实现盈利?

在当今数字化时代&#xff0c;视频号带货已经不仅仅是一种商业手段&#xff0c;更是一种生活方式和社交体验。运营视频号带货并实现盈利&#xff0c;需要我们从多个角度进行深入思考和创新实践。 首先&#xff0c;从用户体验的角度出发 我们需要关注观众的观看体验和购物体验。…

游戏登录界面制作

登录界面制作 1.导入模块和初始化窗口 import subprocessimport tkinter as tkimport picklefrom tkinter import messageboxwindow tk.Tk()window.title(Welcome)window.geometry(450x300) 导入必要的模块&#xff0c;并初始化了主窗口window&#xff0c;设置了窗口的标题和…

STM32完成软件I2C通讯

今天的重点是利用STM32的软件方案和MPU60506轴姿态传感器建立通讯&#xff0c;今天只完成了简单的发送地址和接收应答的部分&#xff0c;特此记录一下过程&#xff0c;以后忘记可以随时翻出来看看。 先介绍最基本的I2C通讯的最基本的6个时序&#xff1a; 一&#xff1a;起始条…

【Yolov系列】Yolov5学习(一)补充2:自适应锚框计算详解+代码注释

一、自适应锚框计算详解 自适应锚框计算的具体过程&#xff1a; ①获取数据集中所有目标的宽和高。 ②将每张图片中按照等比例缩放的方式到 resize 指定大小&#xff0c;这里保证宽高中的最大值符合指定大小。 ③将 bboxes 从相对坐标改成绝对坐标&#xff0c;这里…

预印本仓库ArXiv——防止论文录用前被别人剽窃

文章目录 一、什么是预印本二、什么是ArXiv2.1 ArXiv的领域2.2 如何使用 一、什么是预印本 预印本&#xff08;Preprint&#xff09;是指科研工作者的研究成果还未在正式出版物上发表&#xff0c;而出于和同行交流目的自愿先在学术会议上或通过互联网发布的科研论文、科技报告…

SQL Server 2022 安装及使用

SQL Server 2022 前言一、安装SQL Server 2022下载SQL Server 2022安装SQL Server 2022配置SQL Server 2022 二、安装SQL Server Management Studio下载SQL Server Management Studio安装SSMS-Setup-CHS 三、使用SQL Server 2022四、解决连接到服务器报错问题 前言 SQL Serve…

轻松get!分享4种关于iPhone通话记录怎么查询的方法

想要轻松了解你的iPhone通话记录&#xff1f;通话记录怎么查询&#xff1f;不用担心&#xff0c;我们在这篇文章中将分享四种简单有效的方法&#xff0c;帮助你查询iPhone上的通话记录。 无论是查看最近的通话记录还是检索特定日期范围内的通话历史&#xff0c;这些方法都能帮…

AI:162-如何使用Python进行图像识别与处理深度学习与卷积神经网络的应用

本文收录于专栏&#xff1a;精通AI实战千例专栏合集 从基础到实践&#xff0c;深入学习。无论你是初学者还是经验丰富的老手&#xff0c;对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码&#xff0c;详细讲解供大家学习&#xff0c;希望可以帮到大家。正…

AI大模型日报#0418:Stable Diffusion 3开放API、Meta新研究让AI Agent理解物理世界

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。标题: 微软刚发布了VASA-1 这个人工智能可以让单张图像具有生动的说话和歌唱能力 摘要: 微软发布了VASA-1人工智能&#xff0c;它能使单…

宿舍预付费管控云平台

1.宿舍预付费管控云平台概述 宿舍预付费管控云平台是一种创新的智能管理系统&#xff0c;专为学校、公寓等住宿环境设计&#xff0c;旨在提升管理效率&#xff0c;优化用户体验&#xff0c;并实现资源的高效利用。通过云端技术&#xff0c;该平台可以实现远程充值、实时消费记…

跨平台SIP 客户端-linphone下载、使用、开启视频H264

linphone 介绍 Linphone 是一种开源的语音和视频通信应用程序&#xff0c;它提供了基于互联网协议&#xff08;IP&#xff09;的实时通信功能。用于语音/视频通话、即时消息和电话会议的开源 SIP 电话。它适用于移动和桌面环境&#xff08;iOS、Android、GNU/Linux、macOS、Win…

【UE 材质】雨滴效果

在上一篇博客&#xff08;【UE 材质】表面湿润效果&#xff09;的基础上继续实现物体表面附加雨滴的效果 效果 步骤 1. 下载所需纹理 2. 创建一个材质并打开&#xff0c;添加如下节点&#xff0c;我们将纹理的RG通道输出的值和1组成一个三维向量&#xff0c;作为基本的法线效…

基于Bpmnjs适配Flowable的流程设计器

Flowable在7.x的版本就不提供流程设计器UI&#xff0c;为了广大流程爱好者能更好的使用Flowable&#xff0c;开发了一套完全适配Flowable的bpmnjs的流程设计流程设计器 支持开始事件支持结束事件支持边界事件支持中间事件支持网关事件支持子流程支持泳道泳池扩展微服务组件扩展…

C语言中的控制语句(分支语句 if、switch、三目运算符)

程序执行的三大流程 顺序 : 从上向下&#xff0c; 顺序执行代码分支 : 根据条件判断&#xff0c; 决定执行代码的分支循环 : 让特定代码重复的执行 分支语句 条件语句用来根据不同的条件来执行不同的语句&#xff0c;C语言中常用的条件语句包括if语句和switch语句。 if 语句…

lua 环境安装

下载地址&#xff1a; https://luabinaries.sourceforge.net/download.html 安装环境变量 检查一下是否安装成功&#xff0c;有版本号&#xff0c;打印一句话&#xff0c;如下表示成功 idea 安装插件&#xff0c;方便编写lua脚本 配置一下idea 运行测试 local function m…