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风格‘; ?> 注意:结束标识符必须单独另起一行,并且不能有空格。在标识符前后有其他符号或者字符也会发生错误。 2.脚本风格 <script languagephp> …...

怎么用Excel VBA写一个excel批量合并的程序?
您可以按照以下VBA代码来实现把同一路径上的所有工作簿合并到同一个工作簿中: 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项目时找到依赖的类,包括以下几项: 源码包项目相关的 jar 包及类文件项目引用的的类…...

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

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

如何学习R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合?
专题一:Meta分析的选题与文献计量分析CiteSpace应用 1、Meta分析的选题与文献检索 1) 什么是Meta分析 2) Meta分析的选题策略 3) 文献检索数据库 4) 精确检索策略,如何检索全、检索准 5) 文献的管理与清洗,如何制定文献纳入排除标准 6…...

分布式锁的应用场景与分布式锁实现(二):基于Redis实现分布式锁
分布式锁的应用场景与分布式锁实现(一):传统锁处理并发及传统锁的问题 基于Redis实现分布式锁 所有代码已同步到GitCode: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系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启。 能够被systemctl管理的软件,一般也称之为:服务 语法:systemctl start | stop | status | enabl…...

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

Vue登录界面精美模板分享
文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供vue组件之登陆组件源码…...

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

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

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

【软件设计与体系结构】 软件体系结构风格
软件体系结构(Software Architecture) 软件体系结构(Software Architecture)包括构成系统的设计元素的描述、 设计元素 之间的交互、 设计元素的组合模式以及在这些模式中的约束。 定义 软件体系结构表示系统的框架结构…...

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

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

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. 修改内核参数,防止IP冲突 3、配置w…...

Go中同/异步与锁的应用~~sync包
Go中锁的实现~~sync包 go中sync包中提供了互斥锁; 在前面Go中channel文章中我们使用了time.Sleep()函数使得main函数的Goroutine阻塞至所有协程Goroutine结束,但这并不是一个很好的办法,因为我们实际应用中并不能准确知道协程什么时候结束(这里面要考虑服务器的性能,网络波动以…...

Flask知识点2
1、flash() get_flashed_messages() : 用来消耗flash方法中存储的消息 使用flash存储消息时,需要设置SECRET_KEY flash 内部消息存储依赖了session 2、CSRF(Cross Site Request Forgery) 跨站请求伪造,指攻击者盗用你的身份发送恶意请求 CSRFProt…...

R语言生物群落(生态)数据统计分析与绘图(从数据整理到分析结果展示)
R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来自经典…...

代码随想录训练营Day58| 739. 每日温度 496.下一个更大元素 I
目录 学习目标 学习内容 739. 每日温度 496.下一个更大元素 I 学习目标 739. 每日温度 496.下一个更大元素 I 学习内容 739. 每日温度 739. 每日温度 - 力扣(LeetCode)https://leetcode.cn/problems/daily-temperatures/ class Solution:def da…...

设计模式-命令模式
命令模式 问题背景命令模式基本介绍UML类图 解决方案UML类图代码示例 问题背景 1)随着现在科技越来越先进,我们在家庭中对物品的开关都不需要亲自走过去来进行了。我们只需要通过手机APP中的按键来远程执行这个命令。 2)其实这就是命令模式&…...

软考——下午题部分,例题一,二,三,六
例题一 11年上半年 病人,护理人员,医生 D 生命体征范围文件 日志文件 病历文件 治疗意见文件 14年上 E1 巴士司机,2 机械师,3 会计,4 主管,5 库存管理系统 D 巴士列表文件 维修记录文件 部件清单 人事档案 14年下 1 客户 2 供应商 D 销售订单表 库存…...

关于render: h => h(App)的解释
当我们第一次安装完脚手架,打开 的时候,我相信,一定有小伙伴和我一样,看到main.js里面的render: h > h(App),感觉懵懵的。 因为,在刚开始接触vue的时候,我们这里是这样写的: 而使用了脚手…...

flask实现简易图书管理系统
项目结构 技术选型 flask 做后端, 提供数据和渲染html 暂时没有提供mysql, 后续会更新操作mysql和样式美化的版本 起一个flask服务 flask是python的一个web框架, 下面演示如何提供http接口, 并返回json数据 main.py # flask创建http接口 from flask import Flask, request, jso…...

2021 年全国大学生物联网设计竞赛(华为杯)全国总决赛获奖名单
由全国高等学校计算机教育研究会主办,上海交通大学承办,华为技术有限 公司协办,中国电信天翼物联、中国移动中移物联网、霍尼韦尔 Tridium、CSA 联盟、新大陆、德州仪器 (TI)、百度、机械工业出版社华章公司联合支持的 2021 全国大学生物联网…...

操作系统复习2.3.5-管程
引入管程 PV操作困难,容易书写出错,引入管程,作为一种高级同步机制 组成 局限于管程的共享数据结构说明对该数据结构进行操作的一组过程对局部于管程的共享数据结构设置初始值的语句管程有一个名字 基本特征 局限于管程的数据只能被局限…...