PHP是什么
- PHP全称:Hypertext preprocessor 超文本预处理器,是一种开源的脚本语言
- PHP在服务器上运行,以纯html的形式返回给浏览器
PHP能做什么
- 可以生成动态的页面
- 可以创建、打开、读取、写入、关闭服务器上的文件。
- 可以发送、接受cookie信息
- 可以向服务器发送表单数据
- 可以添加、修改、删除数据库中数据
- 可以限制用户访问网站,或者网站上的某些页面
- 可以加密数据
PHP变量
PHP是一门弱类型的语言,因此会根据变量的值,自动变换为正确的数据类型,在强类型的编程语言中,我们必须在使用变量前先声明定义变量的类型和名称。PHP没有声明变量的命令,故不需要声明变量,变量以$符号开始,后边跟着变量的名称。
变量作用域
php有四种不同的变量作用域
- local (局部作用域–>局部变量)
- global (全局作用域–>全局变量)
- static (静态作用域–>静态量)
- parameter (参数作用域–>参数)
局部作用域 、全局作用域
函数外定义的变量,要想在函数内部使用,需要使用$ GLOBALS[‘变量名称’] ,或者使用global关键字,在函数内部声明该变量为global $ x; 且在此处不能给$ x 赋值;
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
static 作用域
当一个函数完成时,它的所有变量通常都会被删除。当你希望这个局部变量不要发生变化时,可以使用static,因此常用于计数器。
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
参数作用域
调用函数时传递给函数的变量值。
PHP数据类型
String (字符型)、Integar(整型)、float(浮点型)、Boolean(布尔型)、Array(数组),Object(对象)、NULL(空值)
注意点:
- PHP中对象必须声明,利用class关键字声明,类中包含属性和方法。
- NULL 值表示变量没有值,NULL是数据类型为NULL的值
- 常量是一个简单的表示符,在脚本中不可改变,设置常量 用define()函数,常量名不用$ 修改符。
PHP运算符
逻辑运算符:! && || and or xor
数组运算符:合并:+、比较:==, != , ! ==, ===
注释,
- 关联数组合并时:
+ 号,会自动去重,保留第一个重复的值;
array_merge($ arr1,$ arr2),自动去重,保留第二个重复的值 - 索引数组合并:
+ 号,同上,所以只保留第一个数组
array_merge(),相当于数组拼接在一起
全局变量
- $ GLOBA:是一个包含了全部变量的全局组合数组,变量名字即为键名
- $ _SERVER:是一个包含了诸如头信息,路径,以及脚本位置的数组,包含:header、PATH、HTTP_HOST、HTTP_USER_AGENT
- $ _REQUEST:用于搜集表单提交的数据
- $ _ENV:是一个包含服务器端环境变量的数组
- $ _POST、$ _GET、$ _FILES、$ _SESSION、$ _ENV
魔术变量
- __ LINE __:文件中的当前行号
- __ FILE__:文件的完整路径和文件名
- __ DIR__ :文件所在的目录
- __ FUNCTION__ :函数的名称
- __ TRAIT__ :定义/声明复用类
- __ METHOD__ :类方法/函数的名称
- __ NAMESPACE__ :命名空间的名称
PHP引入命名空间作用
- 可解决用户代码与PHP内部类、函数、变量之间的冲突
- 创建别名的名称,提高源代码可读性
PHP数组排序的函数小结
- sort():普通索引数组 升 序排列
- rsort():降序排列
- asort():关联数组的 值 :升序
- ksort():关联数组的键 :升序
- arsort():关联数组 的值 :降序
- krsort():关联数组的键 :降序
PHP文件处理
$ file = fopen(fname,mode);//文件名,打开模式
- r :只读
- r+:读写
- w:只写;文件不存在,创建文件; 会替换掉文件中原来的内容
- w+:读写;文件不存在,创建文件; 会替换掉文件中原来的内容
- a:追加;文件不存在,创建文件
- a+:读、追加;文件不存在,创建文件
- x:只写;文件不存在,创建文件,文件存在,返回false或报错
- x+:读写;文件不存在,创建文件,文件存在,返回false或报错
注意点:x 方式会将文件的指针指向文件头
常用打开文件处理函数:
- fopen(fname,mode):打开文件
- fread(fname,length):读取文件
- fgets(fname):读取单行文件,调用后文件指针会自动移至下一行
- fgetc(fname):读取单字符,调用后文件指针自动移至下一个字符
- feof(fname):检测是否已到文件结尾,对遍历未知长度的数据有用
- fclose(fname):关闭文件
Filesystem函数
- chgrp():改变文件组
- chmod():改变文件权限
- chown():改变文件所有者
- copy():复制文件
- clearstatcache():清除文件状态缓存
- dirname():返回路径中的目录
- basename():返回路径中文件名
- fgetss():从打开的文件中返回一行;并过滤掉html和php标签
- file():将一个文件读入数组中
- file_exists():检查文件或者目录是否存在
- file_get_contents():把文件读入字符串中
- file_put_contens():把字符串写入文件
- fileperms():返回文件的权限
- filetype():返回文件的类型
- filesize():返回文件的大小
- fseek():在打开的文件中定位
- fstat():返回一个关于一个打开文件的信息
- fwrite():写入打开的文件
- glob(“*.txt”):返回一个包含匹配模式指定模式的文件名、目录的数组
- is_dir():判断是否是目录
- is_file():判断是否是文件
- is_executable():判断是否是可执行文件
- is_readable():判断是否可读
- is_writeable():判断是否可写
- is_uploaded_file():判断是否通过http post上传
- is_link():判断文件是否链接
- mkdir():创建目录
- move_uploaded_file():移动文件到指定地方
- pathinfo():返回文件路径的信息
- popen():打开一个进程
- readfile():读取一个文件,并写入到输出缓冲中
- realpath():返回文件的绝对路径名
- rename():重命名文件、目录
- rmdir():删除空的目录
- stat():返回关于文件的信息
- tempfile():创建唯一的临时文件
- touch():设置文件的访问和修改时间
- unlink():删除文件
Str 函数
- addslashes():返回在预定义的字符前添加反斜杠的字符串
- rtrim():删除字符串右侧的空白字符或其他字符
- explode(‘’,$ str):字符串打散成数组
- implode(‘ ’,array):数组分隔成字符串,join是别名
- htmlspecialchars():把预定义的字符转为html实体
- lcfirst():字符串首字母大写,注意并不改变原字符串内容
- ucfirst():字符串首字母小写
- lrim(str,length):删除字符串左侧的空白字符或其他字符
- parse_str():把查询的字符串解析到变量中
- str_replace(s1,s2,allstr):在allstr中的s1替换成s2
- str_split(str,length):把字符串分隔到数组总,length默认0
- strstr(allstr ,‘str’):查找字符串在另一个字符出现,返回余下部分字符(含本身)
- strcmp():比较两个字符串,返回布尔值
- strip_tags():过滤字符串中html和php标签
- strlen():返回字符串的长度
- strops():查找字符串在另一个字符出现的位置,返回数字
- strrev():字符串翻转
- substr($ str ,6,10):返回字符串的一部分
Array函数
- array_column():返回数组中某一单列的值,二维数组好用
- array_combine():合并数组为一个新的数组,一个为键名,一个为键值
- array_diff():比较数组,返回差集(只比较键值)
- array_diff_key():比较数组,返回差集(只比较键名)
- array_diff_assoc():比较数组,返回差集(比较键值和键名)
- array_intersect():比较数组,返回交集
- array_flip():交换数组中的键 和 值
- array_key_exists(‘key’,array):检查指定键名是否存在数组中
- array_map(function(),array):数组中每个元素都发送函数,返回新值
- array_merge():合并数组,区别array_merge_recursive(),键名相同不会覆盖,会把键名相同的元素从新组成一个数组;如果仅有一个索引数组,返回键名会从0开始的新索引数组
- array_pop():删除数组中的最后一个元素
- array_push(array,v1,v2):在数组结尾处插入一个或者多个元素
- array_search(val,array):搜索指定的值,返回键名
- array_shift():删除数组中的首个元素,并返回删除元素
- array_splice():删除、替换数组中指定的元素
- array_unique():数组去重
- array_values():返回数组中的值
- in_array(val,array):检测数组中是否有某值
- list(val1,val2):数组中值赋给一组变量