PHP基础

PHP(外文名:PHP:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种免费开源的、创建动态交互性站点的强有力的服务器端脚本语言

<h1>My Name is LiSi!</h1>
<script>
    console.log("This message is from msg.php!")
</script>
<?php           // PHP 的开始标记,表示从此标记开始,进入PHP 模式。
    phpinfo();  // PHP 代码
                
?>               // PHP 的结束标记,表示从开始标记到结束标记,之间的内容是PHP 模式
                // 之后的内容依然被PHP 解释引擎认为是纯文本字符串。
  • 在PHP 文件中,可以与HTML 和JavaScript 混编。
  • 开始标记<?php 表示进入PHP 模式,结束标记?>,标识退出PHP 模式。
  • PHP 模式之外的内容会被作为字符输出到浏览器中。
  • HTML 或JavaScript 对于PHP 来说就是纯文本字符串。

基础语法

PHP 语句以分号结尾(;

注释

单行注释

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

多行注释

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

空白字符

空白符包括:

空白字符表达
空格<space>
TAB 制表符\t
回车换行\r\n

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

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

变量

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

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

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

1.强数据类型要求所有变量要先定义,定义必须声明数据类型,且指定类型的变量只能接受与类型相匹配的值。简而言之,强数据类型在编译前确认。

2.弱数据类型与强数据类型相反,没有明显的类型,随环境变换自身的数据类型。弱数据类型是在编译时确定数据类型。

命名方式

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

$name;
$Name;
$NAME;

$叫作美元符,英文单词:dollar。PHP的变量必须以美元符开始。说明搞PHP有”钱”途。

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

$name = "LISI";
$name1 = "zs";
$my_name = "lucy";
$_name = "DSB";

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

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

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

$echo;      //建议不要使用
$print_r    //建议不要使用

变量生命和初始化

直接赋值,直接使用

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

$username = "li";

echo $username;

变量释放

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

$username = "JayChou";

echo $username;

unset($username);

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

可变变量

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

$username = "JayChou";
$JayChou = "I am from China!";

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

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

数据类型

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

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

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

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

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

$name   = "lisi";      // 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,即真或假。

$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

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

单引号定义字符串:

  • 单引号定义的字符串中不能包含单引号,如果包含,需要转义\'

  • 单引号中的变量不会被识别。

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

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

双引号定义字符串:

  • 双引号中可以包含单引号,双引号中包含双引号,需要转义\"

  • PHP 会解析双引号之间的变量,最好用{} 将变量名括起来。

$username = "JayChou";

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

echo $message;

定界符定义字符串:

  • 当需要定义输出大段字符串时,并且该字符串中有超多特殊字符,包括单引号,双引号等等。
  • 定界符定义的字符串中的单双引号,还有大部分特殊字符不需要进行转义。
  • 定界符开始标识符<<< + 标志,标志建议大写字母,并且具备一定的语义。
  • 定界符结束标示符标志 + ;,结束标识符之后,只能有换行回车。
  • 标志的命名规则,字母、数字、下划线,并且不能以数字开始。
  • 定界符中的$ 同样会识别成变量,变量名要用{} 括起来。
$name = "JayChou";
$msg = <<<JayChou
<h1>My Name is <span style = "color:yellow">{$name}</span>!</h1>
<script>
    console.log('This message is from info.php!')
</script>
JayChou;
echo $msg;

常量

常量就是长久不变的值,常量在代码中的定义,以及书写方式如下所示:

define(常量名, 常量值)

1、常量名可以小写,但是通常大写
2、常量名可以不加引号,但是通常加上引号
3、在字符串中调用常量的时候,必须在引号外面
4、常量名建议只用字母和下划线

define("SEX","man");

echo SEX;

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 的值减一

字符串运算符

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

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

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

<?php
$name = "JayChou";
$str = "Hello,".$name;
//$str = "Hello,"+$name;
var_dump($str);
?>

赋值运算符

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

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

image-20230817174543394

<?php
$a = 10;
$b = 3;

$a += $b;    // $a+=$b 相当于 $a=$a+$b,其他赋值运算符与此类似
// $a -= $b;
// $a *= $b; 
// $a /= $b;
// $a %= $b;
$a .= $b;          

echo $a;

比较运算符

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

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

例子说明备注
$a == $b等于
$a === $b全等值相等并且数据类型相同
$a != $b不等
$a <> $b不等
$a !== $b不全等
$a < $b小于
$a > $b大于
$a <= $b小于等于
$a >= $b大于等于
<?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逻辑"非"运算
<?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);
?>

其他运算符

image-20230817174423547

三元运算符 ?:
$a = 10;
$b = 20;
$max = $a > $b ? $a : $b;
echo $max;
反引号

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

// ``.php

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

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

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

echo @$username;

流程控制

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

if 语句

语言结构

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

单向条件:

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

双向条件:

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

多向条件:

<?php
If(判断语句1){
   执行语句体1
}elseif(判断语句2{
   执行语句体2
} elseif(判断语句n){
   执行语句体n
}else{
   最后的else语句可选
}

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 后面的语句块是不需要{} 括起来的。

循环语句

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

while

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

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

例子:输出1 到100 数字。

$a = 1;

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

do while

$a = 1;

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

do…while不论while判断是否成立,先执行一次代码框循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)
然而我们之前的while循环会检查布尔判断区域,成立则执行,不成立则不执行.

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/79972.html

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

相关文章

GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发

自己亲自实践&#xff1a; mac安装webpack webpack 简介Webpack 是一个非常流行的前端构建工具&#xff0c;它可以将多个模块&#xff08;包括CSS、JavaScript、图片等&#xff09;打包成一个或多个静态资源文件&#xff08;bundle&#xff09;&#xff0c;以便用于部署到生产…

测试人进阶技能:单元测试报告应用指南

为什么需要单元测试 从产品角度而言&#xff0c;常规的功能测试、系统测试都是站在产品局部或全局功能进行测试&#xff0c;能够很好地与用户的需要相结合&#xff0c;但是缺乏了对产品研发细节&#xff08;特别是代码细节的理解&#xff09;。 从测试人员角度而言&#xff0…

无涯教程-TensorFlow - TensorBoard可视化

TensorFlow包含一个可视化工具&#xff0c;称为TensorBoard&#xff0c;它用于分析数据流图&#xff0c;还用于了解机器学习模型。 TensorBoard的重要功能包括查看有关垂直对齐的任何图形的参数和详细信息的不同类型统计的视图。 深度神经网络包括多达36&#xff0c;000个节点…

Java实现CAS的原理

文章目录 1、 什么是CAS2、CAS的原理3、CAS的应用场景4、Java中的CAS实现5、使用AtomicInteger实现线程安全的计数器6、CAS实现原子操作的三大问题6.1、ABA问题6.2、循环时间长6.3、只能保证一个共享变量的原子性 7、总结 1、 什么是CAS CAS&#xff08;Compare and Swap&…

读书笔记-《ON JAVA 中文版》-摘要22[第二十章 泛型-1]

文章目录 第二十章 泛型1. 简单泛型1.1 简单泛型1.2 一个元组类库 2. 泛型接口3. 泛型方法3.1 泛型方法3.2 变长参数和泛型方法 4. 构建复杂模型 第二十章 泛型 普通的类和方法只能使用特定的类型&#xff1a;基本数据类型或类类型。如果编写的代码需要应用于多种类型&#xff…

5G+AI数字化智能工厂建设解决方案PPT

导读&#xff1a;原文《5GAI数字化智能工厂建设解决方案》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。数字化智能工厂定义 智能基础架构协同框架 - 端、边、云、网…

ARM 作业1

一、思维导图 二、 1. 2. .text 文本段 .globl _start 声明_start:mov r0,#0mov r1,#0fun:cmp r1,#100bhi stopadd r0,r0,r1add r1,r1,#1b fun stop:b stop .end

【3Ds Max】车削命令的简单使用(以制作花瓶为例)

简介 在3ds Max中&#xff0c;"车削"&#xff08;Lathe&#xff09;是一种建模命令&#xff0c;用于创建围绕轴线旋转的几何形状。通过车削命令&#xff0c;您可以将一个闭合的平面或曲线几何形状旋转&#xff0c;从而生成一个立体对象。这种方法常用于创建圆柱体、…

原生微信小程序自定义picker多列选择器:picker写法用法

前言: 最近用原生微信小程序写法写医疗相关项目微信小程序&#xff0c;在编辑个人资料的时候&#xff0c;需要很多选择器&#xff0c;比如城市地区选择器&#xff0c;职业职称选择器&#xff0c;科室选择器&#xff0c;学校选择器&#xff0c;学历选择器&#xff0c;年份日期选…

YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2

基于YOLOv8模型的五类动物目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的五类动物目标检测系统可用于日常生活中检测与定位动物目标&#xff08;狼、鹿、猪、兔和浣熊&#xff09;&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与…

如何区分闰年与平年

首先要明白 地球绕太阳运行周期为365天5小时48分46秒&#xff08;合365.24219天&#xff09;&#xff0c;即一回归年&#xff08;tropical year&#xff09;。公历的平年只有365日&#xff0c;比回归年短约0.2422 日&#xff0c;每四年累积约一天&#xff0c;把这一天加于2月末…

CentOS7源码安装MySQL详细教程

&#x1f60a; 作者&#xff1a; Eric &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_47316183?typeblog &#x1f389; 主题&#xff1a;CentOS7源码安装MySQL详细教程 ⏱️ 创作时间&#xff1a; 2023年08月014日 文章目录 1、安装的四种方式2、源码安装…

机器学习基础之《分类算法(3)—模型选择与调优》

作用是如何选择出最好的K值 一、什么是交叉验证&#xff08;cross validation&#xff09; 1、定义 交叉验证&#xff1a;将拿到的训练数据&#xff0c;分为训练和验证集。以下图为例&#xff1a;将数据分成5份&#xff0c;其中一份作为验证集。然后经过5次(组)的测试&#x…

nginx php-fpm安装配置

nginx php-fpm安装配置 nginx本身不能处理PHP&#xff0c;它只是个web服务器&#xff0c;当接收到请求后&#xff0c;如果是php请求&#xff0c;则发给php解释器处理&#xff0c;并把结果返回给客户端。 nginx一般是把请求发fastcgi管理进程处理&#xff0c;fascgi管理进程选…

musl libc ldso 动态加载研究笔记:02

前言 本篇继续研究 musl libc ldso 的动态加载过程中遇到的关键性的概念&#xff1a;到底要加载ELF 文件的哪些内容到 内存 当前如果遇到 ELF 动态加载&#xff0c;当前系统需要有【文件系统】&#xff0c;并且有较大的内存&#xff0c;因为 ELF 文件是无法直接运行的&#xf…

【解析postman工具的使用---基础篇】

postman前端请求详解 主界面1.常见类型的接口请求1.1 查询参数的接口请求1.1.1 什么是查询参数?1.1.2 postman如何请求 1.2 ❤表单类型的接口请求1.2.1 复习下http请求1.2.2❤ 什么是表单 1.3 上传文件的表单请求1.4❤ json类型的接口请求 2. 响应接口数据分析2.1 postman的响…

Qt应用开发(基础篇)——MDI窗口 QMdiArea QMdiSubWindow

一、前言 QMdiArea类继承于QAbstractScrollArea&#xff0c;QAbstractScrollArea继承于QFrame&#xff0c;是Qt用来显示MDI窗口的部件。 滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 框架类 QFramehttps://blog.csdn.net/u01…

【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPushConsumer的实现原理及源码分析

RocketMQ开源是使用文件作为持久化工具&#xff0c;阿里内部未开源的性能会更高&#xff0c;使用oceanBase作为持久化工具。 在RocketMQ1.x和2.x使用zookeeper管理集群&#xff0c;3.x开始使用nameserver代替zk&#xff0c;更轻量级&#xff0c;此外RocketMQ的客户端拥有两种的…

公网远程连接Redis数据库「内网穿透」

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 前言 洁洁的个人主页 我就问你有没有发挥&#xff0…