当前位置: 首页 > news >正文

PHP语言基础

一.标记风格

标记风格分为四类(推荐XML)

1.XML风格

<?php

echo'这是xml风格‘;

?>

注意:结束标识符必须单独另起一行,并且不能有空格。在标识符前后有其他符号或者字符也会发生错误。

2.脚本风格

<script language='php'>

echo'这是脚本风格';

</script>

3.简短风格

<?echo'这是简短风格的标记’;?>

4.ASP风格

<%

echo'这是ASP风格标记';

%>

说明:如果要使用简短风格和ASP风格,要在php.ini中对其进行配置。

二.PHP注释的作用

支持3种风格的注释

1.单行注释(//)

<?php

//这是php的单行注释,使用C++的注释风格

?>

2.多行注释(/*....*/)

<?php

/*

1

2

3

*/

?>

3.文档注释

4.风格注释(#)

注意:在单行注释中内容不要出现?>标志,因为解释器会认为PHP脚本结束,而不去执行?>后面的代码。

三.PHP的数据类型

PHP支持8种原始类型,包括4种标量类型,即Boolean,integer,float/double和string;2种复合类型,即array和object;两种特殊类型,即resource与null。

1.标量数据类型

标量数据类型是数据结构中最基本的单元,只能存储一个数据。

说明:所有变量都是以$开头的,无论是声明变量还是调用变量,都应该使用$.

Boolean:最简单的类型,只有两个值。

在PHP中不是只有false值才被认为是假的,一些特殊情况也是如,0、00、"0"、空白字符串("")、只声明没有赋值的数组等。

string:字符串就是连续的字符序列,可以是计算机所能表示的一切字符集合。

有三种定义字符串的方式,分别是(’)、(“)和定界符(<<<)

注意:双引号中所包含的变量会自动替换成实际数值,而单引号中包含的变量则按普通字符串输出。

注意:如果对非转义字符使用\,那么在输出时,\也会一起输出。

说明:在定义简单的字符串时,使用单引号是一个更加合适的处理方式,使用双引号的话php要花费一些时间来解析。

单引号格式:$a = '字符串';

双引号格式:$a ="字符串";

定界符格式:$string = <<<str 要输出的字符串 str

integer:只能包含整数,可以是正数也可以是负数。

注意:如果在8进制出现了非法数字(8和9),则后面的数字会被忽略掉。

注意:如果给的数值超过了int型能表示的最大范围。将会被当成float型处理,这种情况称为整数溢出。同样的,如果表达式的最后运算结果超出了int型的范围,也会返回float型。

float:只能用于存储数字,和整型不同的是有小数点。

默认有两种书写格式

第一种

3.14415

-35.8

第二种是科学记数法

358E1

849.72E-3

注意:浮点型的数值只是一个近似值,所有要尽量避免浮点数值之间比较大小,因为最后的结果往往是不准确的。

2.复合数据类型

array:一组类型相同的变量的集合。

格式:$array = array('value1','value2'...)  or $array[key] = 'value'  or $array = [key1=>value1,key2=> value....]

key是数组元素的下标,value是数组下标所对应的元素,以下都是正确的格式

$arr1 = array('This','is');

$arr2 = (0=>'php',1=>'is','the' =>'the','str'=>'best');

$arr3[0] = 'tmpname';

object:对象是类的实例,使用new命令来创建。

3.特殊数据类型

resource:资源是一种特殊变量,又叫作句柄,保存了到外部资源的一个引用,资源是通过专门的函数的函数来建立和使用。

null:特殊的值,表示没有值,唯一的就是null。

注意:is_null()函数用于判断变量是否为null。返回一个Boolean型,如果为null则返回true。unset()函数用来销毁指定变量。

4.数据类型的转换

(boolean)转换为布尔型 如(boolean)$num (boolean)$str

(string)转换为字符型

(integer)转换成整型

(float)转换成浮点型

(array)转换成数组

(object)转换成对象

类型转换还可以通过settype()函数来完成,该函数可以将指定的变量转换成指定的数据类型。

bool settype(mixed var,string type)

其中var为指定的变量,type为指定的类型,转换成功则返回true。

5.检测数据类型

is_bool 检查变量是否为布尔型

is_string 检查变量是否为字符串类型 如:is_string('1234')

is_float/is_double  检查变量是否为浮点类型

is_integer/is_int  检查变量是否为整数

is_null  检查变量是否为null

is_array  检查变量是否为数组类型

is_object  检查变量是否为一个对象类型

is_numeric  检查变量是否为数字或由数字组成的字符串

四.PHP常量

1.声明和使用常量

在PHP中用define()函数来定义常量,该函数语法格式如下:

defing(string constant_name,mixed value,case_sensitive=false)

如:

<?php

define('message','cxy');

echo message;

?>

参数说明:

value:必选参数,常量的值。

constant_name:必选参数,常量的名称,即标识符。

case_sensitive:可选参数,指定是否大小写敏感,设定为true,表示不敏感。

获取常量的值有两种方法:

第一种:使用常量名直接获取值。

第二种:使用constant()函数

constant函数和直接使用常量名输出的效果是一样的,但函数可以动态地输出不同的常量。

语法格式:mixed constant(striing const_name)

用defined函数判断一个常量是否被定义,语法格式如下:

bool defined (string constant_name);

2.预定义常量

__FILE__:默认常量,PHP程序文件名。

__LINE__:默认常量,PHP程序行数。

PHP_VERSION:内建常量,PHP程序的版本。

PHP_OS:内建常量,执行PHP解析器的操作系统名称,如Windows。

TRUE:该常量是一个真值(true)。

FALSE:该常量是一个假值(false)。

NULL:一个null值。

E_ERROR:该常量指到最近的错误处。

E_WARNING:该常量指到最近的警告处。

E_PARSE:该常量指到解析器语法有潜在问题处。

E_NOTICE:该常量为发生不寻常的提示但不一定是错误处。

注意:__FILE__和__LINE__的下划线是两条而不是一条。

5.PHP变量

1.变量声明及使用

对于字符串和数字类型的变量,可以通过‘=’来实现。格式:

<?php $name = value; ?>

非法命名:$11112_var = 11112; $@spcn = 'spcn';

合法命名:$thisCup='oink'; $_Class='roof';

除了直接赋值外,还有两种方式可以为变量声明或赋值,

一种是变量间的赋值:$string1 = $string2;

另外一种是引用赋值 $j = & $i;

引用和复制的区别在于:复制是将原变量的内容复制下来,开辟一个新的内存空间来保存,而引用则是给变量的内容再起一个名字。

2.变量作用域

局部变量:在函数内部定义的变量,其作用域是所在函数。

全局变量:被定义在所有函数以外的变量,其作用域是整个PHP文件,但在用户自定义函数内部是不可用的。如果希望在用户自定义函数内部使用全局变量,则要使用global关键字声明。

静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值,而一般变量是在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。使用静态变量时,先要用关键字static来声明变量,把关键字static放在要定义的变量之前。

在函数内部定义的变量,作用域在函数内部,如果在函数外赋值,将被认为是完全不同的另一个变量,在推出声明变量的函数时,该变量及相应的值会被清除。

3.可变变量

可变变量是一种独特的变量,允许动态的改变一个变量的名称,工作原理是该变量的名称由另外一个变量的值来确定,实现过程就是在变量的前面再多加一个$.

<?php 

$a='b';

$b='php';

echo $a;

echo $$a; //通过可变变量来输出$b的值

?>

结果 b php

六.PHP运算符

1.算数运算符

加法(+)

减法(-)

乘法(*)

除法(/)

取余数运算(%)

说明:在算术运算符中使用%求余,如果被除数是负数,那么取德的结果也是一个负值。

2.字符串运算符(.)

字符串运算符只有一个,即是.,这里的+只能作算数运算符,不能用作字符串运算符。

<?php

$n='3.14';//声明一个字符串变量,以数字开头

$m=1;//声明一个整型变量

$nm = $n.$m;

$mn = $n+$m;

echo $nm;

echo $mn;

?>

结果:3.141   4.14

3.赋值运算符

赋值(=)$a=3        将右边的值赋值给左边

加(+=)$a+=2        $a=$a+2

减(-=)$a-=2        

乘(*=)$a*=3

除(/=)$a/=4

连接字符(.=)$a.='b'        $a=$a.'b'

取余数(%=)$a%=5

4.递增递减运算符

递增(++)递减(--)

使用方法有两种

第一种:将运算符放在变量前面。先将变量加一或者减一运算后再将值赋值给原变量。

第二种:将运算符放在变量后面。先放回变量当前的值再将变量加一或者减一。

5.位运算符

&(与)、|(或)、^(异或)、~(取反)、<<(向左移位)、>>(向右移位)

6.逻辑运算符

&&或and (与)

||或or(或)

xor(异或)

!(非)

7.比较运算符

<(小于)

>(大于)

<=(小于等于)

>=(大于等于)

==(相等)

!=(不等)

===(恒等)

!==(非恒等)

8.条件运算符

条件运算符(.?:),也称为三目运算符,用于根据一个表达式再另外两个表达式中选择一个,而表示用来再两个语句或程序中选择。

<?php

$value=100;

echo($value==true)?'条件运算':'没有该值';

?>

结果:条件运算

9.运算符的优先级

七.PHP的表达式

表达式是PHP最重要的基石。在php语言中,几乎所写的任何对象都是表达式。

八.PHP函数

1.基本语法格式

function fun_name($str1,$str2.....$strn){

        fun_body;

}

fun_name为自定义函数名。

$str1,$str2为函数的参数。

fun_body为自定义函数的主体,功能实现的部分。

2.在函数间传递参数

按值传递方式

按引用传递方式

默认参数(可选参数)方式

当使用默认参数时,默认参数必须放在非默认参数的右侧,否则函数可能出错。

3.从函数中返回值

4.变量函数

相关文章:

PHP语言基础

一.标记风格 标记风格分为四类(推荐XML) 1.XML风格 <?php echo这是xml风格‘&#xff1b; ?> 注意&#xff1a;结束标识符必须单独另起一行&#xff0c;并且不能有空格。在标识符前后有其他符号或者字符也会发生错误。 2.脚本风格 <script languagephp> …...

怎么用Excel VBA写一个excel批量合并的程序?

您可以按照以下VBA代码来实现把同一路径上的所有工作簿合并到同一个工作簿中&#xff1a; VBA Option Explicit Sub MergeWorkbooks() Dim path As String, fileName As String, sheet As Worksheet Dim targetWorkbook As Workbook, sourceWorkbook As Workbook Dim workshe…...

WuThreat身份安全云-TVD每日漏洞情报-2023-05-22

漏洞名称:Apple WebKit 任意代码执行漏洞 漏洞级别:中危 漏洞编号:CVE-2023-32373 相关涉及:Apple iOS和iPadOS 16.4.1 漏洞状态:在野 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-12579 漏洞名称:海康威视部分iVMS系统存在文件上传漏洞 漏洞级别:未定义…...

Eclipse教程 Ⅵ

今天分享Eclipse Java 构建路径、Eclipse 运行配置(Run Configuration)和Eclipse 运行程序 Eclipse Java 构建路径 设置 Java 构建路径 Java构建路径用于在编译Java项目时找到依赖的类&#xff0c;包括以下几项&#xff1a; 源码包项目相关的 jar 包及类文件项目引用的的类…...

Seaborn.load_dataset()加载数据集失败最佳解决方法

load_dataset() 是 Seaborn 库中提供的一个函数&#xff0c;用于加载一些原始数据集。这些数据集包含了许多经典的数据集&#xff0c;比如鸢尾花数据集、小费数据集等&#xff0c;这些数据集在数据可视化和机器学习中非常常见。 使用 load_dataset() 函数可以方便地获取这些数…...

java 区分缺陷Defects/感染Infections/失败Failure

java 区分缺陷Defects/感染Infections/失败Failure 缺陷Defects 软件故障总是从代码中一个或多个缺陷的执行开始。 缺陷只是一段有缺陷、不正确的代码。 缺陷可能是程序语句的一部分或完整部分&#xff0c;也可能对应于不存在但应该存在的语句。 尽管程序员要对代码中的缺陷负…...

如何学习R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合?

专题一&#xff1a;Meta分析的选题与文献计量分析CiteSpace应用 1、Meta分析的选题与文献检索 1) 什么是Meta分析 2) Meta分析的选题策略 3) 文献检索数据库 4) 精确检索策略&#xff0c;如何检索全、检索准 5) 文献的管理与清洗&#xff0c;如何制定文献纳入排除标准 6…...

分布式锁的应用场景与分布式锁实现(二):基于Redis实现分布式锁

分布式锁的应用场景与分布式锁实现&#xff08;一&#xff09;&#xff1a;传统锁处理并发及传统锁的问题 基于Redis实现分布式锁 所有代码已同步到GitCode&#xff1a;https://gitcode.net/ruozhuliufeng/distributed-project.git 基本实现 ​ 借助Redis中的命令setnx(key&a…...

【JavaSE】Java基础语法(四十二):NIO

文章目录 1. 概述2. NIO与BIO的区别3. NIO三大模块4. NIO创建缓冲区对象【应用】5. NIO缓冲区添加数据【应用】6. NIO缓冲区获取数据【应用】7. 小结 1. 概述 BIO Blocking IO,阻塞型IONIO No Blocking IO,非阻塞型IO阻塞IO的弊端 在等待的过程中,什么事也做不了非阻塞IO的好处…...

Linux---systemctl

1. systemctl命令 Linux系统很多软件&#xff08;内置或第三方&#xff09;均支持使用systemctl命令控制&#xff1a;启动、停止、开机自启。 能够被systemctl管理的软件&#xff0c;一般也称之为&#xff1a;服务 语法&#xff1a;systemctl start | stop | status | enabl…...

零钱兑换,凑零钱问题,从暴力递归到动态规划(java)

凑零钱问题&#xff0c;从暴力递归到动态规划 leetcode 322 题 零钱兑换暴力递归&#xff08;这个会超时&#xff0c;leetcode 跑不过去&#xff09;递归缓存动态规划优化暴力递归动态规划专题 leetcode 322 题 零钱兑换 322 零钱兑换 - 可以打开链接测试 给你一个整数数组 c…...

Vue登录界面精美模板分享

文章目录 &#x1f412;个人主页&#x1f3c5;Vue项目常用组件模板仓库&#x1f4d6;前言&#xff1a;&#x1f380;源码如下&#xff1a; &#x1f412;个人主页 &#x1f3c5;Vue项目常用组件模板仓库 &#x1f4d6;前言&#xff1a; 本篇博客主要提供vue组件之登陆组件源码…...

Linux设备驱动程序(二)——建立和运行模块

文章目录 前言一、设置测试系统二、Hello World 模块1、代码详解2、执行效果 三、内核模块相比于应用程序1、用户空间和内核空间2、内核的并发3、当前进程4、几个别的细节 四、编译和加载1、编译模块2、加载和卸载模块3、版本依赖 五、内核符号表六、预备知识七、初始化和关停1…...

【算法】单调栈问题

文章目录 题目思路分析代码实现 题目 给定一个不含有重复值的数组arr&#xff0c;找到每一个i位置左边和右边离i位置最近且值比arr[i]小的位置&#xff0c;返回所有位置相应的消息。 比如arr{3&#xff0c;4&#xff0c;1&#xff0c;5&#xff0c;6&#xff0c;2&#xff0c;…...

Hack The Box - 关卡Dancing

SMB(全称是Server Message Block)是一个协议名&#xff0c;可用于在计算机间共享文件、打印机、串口等&#xff0c;电脑上的网上邻居就是靠它实现的。 SMB 是一种客户机/服务器、请求/响应协议。通过 SMB 协议&#xff0c;客户端应用程序可以在各种网络环境下读、写服务器上的…...

【软件设计与体系结构】 软件体系结构风格

软件体系结构&#xff08;Software Architecture&#xff09; 软件体系结构&#xff08;Software Architecture&#xff09;包括构成系统的设计元素的描述、 设计元素 之间的交互、 设计元素的组合模式以及在这些模式中的约束。 定义 软件体系结构表示系统的框架结构&#xf…...

detectron2 使用教程

本范例演示使用非常有名的目标检测框架detectron2 🤗🤗 在自己的数据集(balloon数据)上训练实例分割模型MaskRCNN的方法。 detectron2框架的设计有以下一些优点: 1,强大:提供了包括目标检测、实例分割、全景分割等非常广泛的视觉任务模型库。 2,灵活:可以通过注册机…...

哈希表常用数据结构

哈希表常用数据结构 查询一个元素是否出现过&#xff0c;或者一个元素是否在集合里的时候&#xff0c;就要第一时间想到哈希法。 哈希法也是空间换时间&#xff0c;因为我们要使用额外的数组&#xff0c;set或者是map来存放数据&#xff0c;才能实现快速的查找。 集合底层实现…...

Java字节流

4 字节流 字节流抽象基类 InputStream:这个抽象类是表示字节输入流的所有类的超类OutputStream:这个抽象类是表示字节输出流的所有类的超类子类名特点:子类名称都是以其父类名作为子类名的后缀4.1 IO流概述和分类 IO流概述: IO: 输入/输出(Input/Output)流:是一种抽象概念…...

arm3399主板-使用ubuntu20.04搭建LVS-DR(netplan)

目录 一、规划 1、网络拓扑 2、检查 二、配置设备 1、配置LVS 1.配置IP转发 2.清除防火墙 3.安装ipvsadm工具 4.配置VIP 5.netplan与NetworkManager介绍 6.添加LVS规则 1.清除防火墙 2.添加伪装IP 3.安装web服务 4. 修改内核参数&#xff0c;防止IP冲突 3、配置w…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...