PHP基础语法随记,PHP基础语法
PHP常量:
预定义常量:
PHP自身也定义了大量的预定义常量,可以使用get_defined_constants()来查看,比较常用的预定义常量有:
PHP_OS:PHP系统。
PHP_VERSION:PHP版本。
PHP_EOL:换行符(跨平台移植型,很重要),会根据不同的操作系统使用不同的值。不同操作系统换行符不同。 window: \r\n *nix: \n MAC: \r
PHP_INT_MAX:整形的最大值。
PHP_INT_SIZE:整形占用的字节数。
PATH_SEPARATOR:环境变量中路径与路径间的分隔符。
DIRECTORY_SEPARATOR:目录分隔符。window下 '\' 和 '/'都可以, *nix只能使用'/'。
魔术常量:
形似常量,实非常量,语法上类似常量,称之为魔术常量!
__FILE__:完整的文件路径和文件名。典型的应用(项目代码)如:
define('ROOT_PATH',str_replace('7.php','',__FILE__));
echo ROOT_PATH;
结果等同(__DIR__,该常量在PHP5.3新增)
__FUNCTION__:获得当前的函数名的魔术常量!
PHP进制的转换
在PHP中,提供了一系列函数进制的转换:
hex:16进制;dec:10进制;oct:8进制;bin:2进制。
如:decbin(),将10进制数转换2进制数;octhex()将8进制转换成16进制。
对于整形,一旦数值过大,不会溢出,而是发生类型转换,会转成浮点型。
php不支持无符号整型。
如:
$a = PHP_INT_MAX; //2147483648
$b = $a+1;
var_dump($b); //float
在php中,float,double 实际上是相同的。浮点数具有14位十进制数字的精度,最大值 和平台相关,通常是 1.8e308。浮点数的比较是不靠谱的。在编写程序的时候,不要试图通过比较两个浮点数是否相等来获得业务逻辑。
字符串的定义方式
有四种方式来定义字符串:双引号,单引号,heredoc(定界符),nowdoc(定界符)
双引号可以解析变量,单引号不能解析变量。单引号可以包含双引号,双引号可以包含单引号,但是引号不能包含引号自身。
变量能不能解析,不是取决于变量被哪一个包含,而是取决于定义字符串是单引号还是双引号,如果是双引号,则变量解析,如果是单引号,则不解析。
在字符串中,如果有{$ 连在一起的时候,就表示{}当中的这个作为一个变量进行解析。
变量被认为NULL的情况
1.被赋值为 NULL
2.尚未被赋值
3.被unset()
最常见的一个应用就是将对象的值赋值为NULL,以销毁该对象。
数据类型相关函数
var_dump():打印变量的详细信息,包括类型和值。
gettype():获得类型。
settype():设置类型。
is系列:其中is_array()会经常用到。
isset():检查一个变量是否存在(设置)。
empty() : 检查一个变量是否为空.
对于isset()而言,只要有声明过(有值),不管他的值是什么,都返回true.
对于empty()而言,相当于boolean(变量),然后再来取反.
转换成布尔型被认为是FALSE的情况
1.布尔值 FALSE 自身
2.整型值 0 (零)
3.浮点型值 0.0 (零)
4.空字符串, 以及 字符串 "0" (注意"00"、"0.0"被认为是TRUE)
5.空数组
6.特殊类型 NULL (包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括对象和资源)。
PHP的运算规则
除法运算的结果,可能是浮点数,也可能是整数。
在取模运算中,如果有小数,则会去除小数部分。
在取模运算中,结果的正负取决于第一个数。
原码
将十进制转成的二进制。用最高位表示符号位,0表示正数,1表示负数。
反码
对于正数,反码和原码相同
对于负数,符号位不变,其它位取反。
补码
对于正数,补码和原码相同
对于负数,在反码的基础上 + 1。
转码的时候符号不变,运算的时候符号位参与运算,
移位运算
右移:低位溢出,符号位不变,高位用符号位补全 (相当于除以2的n次幂,然后取整)
左移:高位溢出,符号位不变,低位补0 (相当于乘以2的n次幂)
不管是左移还是右移,它只会改变该数的大小,不改变符号,所以在移位操作的时候,符号位始终是不变的。
PHP运算符号优先级
and or 和 && ||的区别。
用法相同,优先级不同。 && 、|| > = > and 、 or
break:终止,当执行到break时,整体的循环循环语句直接结束。
continue:继续,当前循环体结束执行,而继续执行下次循环体。
include和require
设置include_path的值
使用函数set_include_path()。
set_include_path('d:/php/test');然后直接require 'file.php',
注意:在设置时,后设置的会将前面设置的覆盖掉!
取得当前的include_path的值
利用函数:get_include_path()可以获得当前的include_path的值!
目录之间采用分号连接.
set_include_path('d:/php/test'.PATH_SEPARATOR.get_include_path());
PHP对代码的编译时已源文件为单位的,当前文件如果有语法错误,php会报错。不会执行代码编译处理。
require(require_once)和include(include_once)的区别
在载入文件失败时,对文件的依赖不同,触发的错误不一致!级别不同。
require(require_once):会触发一个 致命错误,导致脚本终止;
include(include_once):会触发一个 警告错误,脚本继续运行。
require(include)和require_once(include_once)的区别:
带once指的是加载一次。在执行加载时,带once的会先对当前文件是否已经加载的了该文件做一判断。
已经加载:不会再次加载
没有加载:执行加载!
使用尽量使用require即可。
控制脚本执行
终止脚本执行和延迟脚本执行。
die(),exit():终止脚本执行,一旦出现,脚本立即终止,结束所有执行。并且可以在结束前输出一段字符串。
sleep():延迟脚本执行,暂停一段时间,以秒为单位。最大执行周期为30秒,可以被配置,在php.ini文件中 max_execution_time = 30
如果在参数列表内,有部分参数存在默认值,但是部分不存在,则将有默认值的参数放在形参列表后边完成。
func_get_args():得到函数内的所有实参。
$GLOBALS:预定义变量
专门为用户数据超全局化的一个预定义变量。
不同于其他的超全局变量:
每个全局变量,自动地 与 $GLOBALS内的一个元素相对应。
增加一个全局变量,则自动在$GLOBALS内增加一个同名元素!反之亦然!
$v1 = 10;
var_dump($GLOBALS['v1']);
$GLOBALS['v2'] = 20;
var_dump($GLOBALS['V2']);
global的作用是
声明一个局部变量,并将其初始化为同名全局变量的一个引用!
匿名函数的作用
典型的匿名函数可以作为临时函数来使用。例如,有些内部函数,需要调用某个函数来完成操作!像:array_map():返回数组 = array_map('函数',数组); 对某个数组内的所有元素利用提供的函数做操作!
凡是参数需要 callback(callable)地方,都是通过传递匿名函数完成!
PHP数组指针问题
指针函数
php有:获得指针指向的数组元素的键和值的能力!利用函数:
current(),获得当前元素的值
key():获得当前元素的键。如果指针已经非法,返回NULL。用来判断是否存在元素了
还应该有:将指针移动的能力!
next():可以完成指针的移动!
数组函数:
range():可以得到某个范围内的元素数组。
array_merge('$arr1','$arr2',...):数组合并,合并多个。
下标重复会怎么样?
数值索引:完全重新索引!
字符下标:后出现的元素值会覆盖前面的元素值!
array_rand(数组,个数):随机地从数组内取得元素,取得是下标!如果多个,返回随机下标的集合!结果是被排序之后的,从小到大!
shuffle(&$arr):打乱数组内元素的顺序。注意,参数为引用传递!会打乱原数组。
键值操作:
array_keys(): 取得所有的键。
array_values():取得所有的值。
in_array():是否存在某个值。
array_key_exists():某个键是否存在。
array_combine('键数组','值数组'): 利用两个数组合并成一个数组,其中一个作为键,另一个作为值!
array_fill('第一个索引值','数量','值'):填充数组。
数组 = array_fill(起始下标,填充的元素个数,填充的值);
array_chunk():拆分数组,原则是子数组内的元素个数!
array_intersect($arr1, $arr2):计算两个数组的交集,找到在$arr1中存在,并也在$arr2中存在的元素,数据是出现在第一个参数中的。
array_diff($arr1, $arr2):计算两个数组的差集。找到在arr1中存在,但是在arr2中不存在的元素!
数组模拟栈和队列:
桟 和 队列 都是典型数据结构,都是 list 列表的一种。
入栈:array_push(),在数组的尾端将数据压入数组。
出栈:array_pop(),在栈顶输出元素。
array_push()与array_pop()会重新索引,保证所有的元素都是由0开始的逐一递增。
入队:array_push(),在数组的尾端将数据压入数组。
出队:array_shift(),在数组的顶端,将数据取出。
array_unshift(),可以将数据由数组的顶端压入数组。
数组排序函数
排序函数都是引用传值!
r:reverse,反转 。a:association,关联。u:user,用户自定义。
sort('数组'): 按照值,升序,不保持键值关联。
rsort('数组'): 按照值,降序,不保持键值关联。
asort('数组'): 按照值,升序,保持键值关联。
arsort('数组'): 按照值,降序,保持键值关联。
ksort('数组'): 按照键,升序,保持键值关联。
krsort('数组'): 按照键,降序,保持键值关联。
natsort('数组'): 自然数排序,可以利用计算出来的自然数,对数据进行排序!
usort('数组'): 自定义排序,用户自定义的元素之间的大小关系。用户提供一个比较两个元素大小的函数,并可以告知php元素的大小关系。用户所定义的函数,负责告知usort()两个元素之间的大小关系,而usort得到关系之后,负责完成排序!利用返回值告知!
升序的返回效果:
返回负数,表示第一个元素小;
返回正数,表示第一个元素大;
返回0,表示相等。

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。

PHP在过去几十年中塑造了网络,并将继续在Web开发中扮演重要角色。1)PHP起源于1994年,因其易用性和与MySQL的无缝集成成为开发者首选。2)其核心功能包括生成动态内容和与数据库的集成,使得网站能够实时更新和个性化展示。3)PHP的广泛应用和生态系统推动了其长期影响,但也面临版本更新和安全性挑战。4)近年来的性能改进,如PHP7的发布,使其能与现代语言竞争。5)未来,PHP需应对容器化、微服务等新挑战,但其灵活性和活跃社区使其具备适应能力。

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHP没有死。1)PHP社区积极解决性能和安全问题,PHP7.x提升了性能。2)PHP适合现代Web开发,广泛用于大型网站。3)PHP易学且服务器表现出色,但类型系统不如静态语言严格。4)PHP在内容管理和电商领域仍重要,生态系统不断进化。5)通过OPcache和APC等优化性能,使用OOP和设计模式提升代码质量。

PHP和Python各有优劣,选择取决于项目需求。1)PHP适合Web开发,易学,社区资源丰富,但语法不够现代,性能和安全性需注意。2)Python适用于数据科学和机器学习,语法简洁,易学,但执行速度和内存管理有瓶颈。

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版
好用的JavaScript开发工具