phpize
内存用来存储运行的程序及数据。变量名及变量值在内存的不同位置。
内存组成:
栈区:空间小,运行速度快,存储变量名、函数名、常量名等。
堆区:空间大,运行速度慢,一般存储复杂数据(数组、对象)
全局数据区:
存储变量值、常量值等
代码区:
存储函数、方法。
案例:a,将变量值的存储地址存储在栈区的变量名中。
读取变量:
$a—栈区拿到变量的在变量区的存储地址oxFF---去对应地址读取值
echo语句
输出字符串、变量及表达式
可以
同时输出多个变量及字符串
。
print语句
可以输出字符串及变量及表达式
与echo语句的区别为:
print不支持 同输出多个
字符串及变量。
为语言结构,不是函数。
var_dump()
输出
一个或者多个变量
的类型,长度及值
。一般用于打印复杂变量
,如数组。
print_r()
输出变量的值。一般用于打印变量。打印数组
相较于var_dump清晰
删除变量
unset($var);
删除变量名及值之间的对应关系。 变成未定义变量
变量名及变量值不会立即消失
,PHP有专门的垃圾回收
机制处理。
引用传递
地址传递。
a;
&取地址符号,将b。
二者指向同一地址
删除一个变量,另外一个不受影响:
1)$_SERVER
是一个数组,保存执行环境及服务器的信息。
2)$_GET
3)$_POST
4)$_REQUEST
1)语法
define(常量名,常量值,TRUE/FALSE);
1)注意
常量默认区分大小写。
常量名推荐全部字母大写
常量不可以重复定义及修改数据。
设置第三个参数为true,常量不区分大小写
2)const 常量名=常量值
3)constant()
可以获取对应的(特殊常量名)常量值。
1)get_defined_constants()
获取当前脚本执行中全部已经定义的常量。返回为数组。包括预定义常量及用户定义的常量。
PHP_INT_MAX
PHP_INT_SIZE
魔术常量
它们的值随着它们在代码中的位置改变而改变
1)__DIR__
文件所在的目录。
1)
__LINE__
获取当前的行号
1)
__FILE__
获取当前执行脚本的路径及文件名。
JS的数据类型:
5基本(number, string, boolean, null, undefined ),1复杂(object)
特殊类型
1)null
为null的几种情况:
变量未赋值 变量被删除 变量被赋值为null
2)resource
资源型,为到第三方数据的引用(如成功的数据库连接等)
进制转换函数
decimal:10进制
binary:二进制
octal:八进制
hexdecimal:十六进制
decbin(int 值):十进制转二进制
decoct(int 值):十进制转八进制
dechex(int 值):十进制转16进制
bindec(string 值):
octdec(string 值)
hexdec(string 值)
浮点型类型
l 小数。一般用float,double表示。
l 一般程序语言有单精度、双精度之分(精度为小数的位数)。PHP只实现了双精度。
l 最多为14位有效数字,表示范围为-1.810^-308---- 1.810^308
l 占据的空间为8字节。
0.123456 有效数字为6,小数位6位
1) 浮点型的表现形式
常用格式 1.2
科学计数法 1.234e2
eN表示10的N次方
2) isset()
变量未设置或者设置为null
,返回false。其余情况全部为true
3) empty()
判断变量是否为空。
逻辑判断为false
的变量,使用empty判断,返回true。
4) is_type系列函数
l is_int/is_integer 判断是否是整型
l is_float/is_double/is_numeric(是否是数值型)
l is_string
l is_boolean/is_bool
l is_array
l is_null
l is_resource
返回值 为true或者false。
类型判断与转换
1. gettype()
获取数据的类型名称字符串。
返回的字符串的可能值为:
l boolean
l integer
l double
l string
l array
l object
l resource
l NULL
1.自动转换
PHP本身为弱类型语言,支持类型的自动转换。
数据参与运算时,根据实际环境自动转换类型参与运算。
如算术运算,为数值。
参与算术运算的数据为数值类型。
转换为数值类型的原则:
纯数字组成的字符串转换为相应的数字
可以转换为浮点型的字符,转换为相应的浮点数。
不以数字开头的字符串,转换为0.包括’true’。
布尔型true转换为1,false转换为0.
自动转换后不该变原始变量的数据类型,仅修改参与运算的类型
1.类型强制转换
转换原则:
与类型自动转换原则一致。
(类型字符串)变量;
2.自动转换及强制转换比较
转换之后,原始数据类型不发生转换,只是数据参与运算的值发生改变
自动转换(根据环境)的原则与强制转换(人为转换)的原则一致。
3.settype()
将变量设置为指定的类型。
settype($name,’类型字符串’)
返回值为true(成功时)或者false。
会修改变量的值
算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
()可以改变运算的优先级。
字符串连接符.字符串分隔符,
1)错误抑制符
放在表达式前,忽略错误信息。
错误抑制符为@
可以放在变量、常量及函数的调用之前
die/exit(“提示”);
include与require区别
四个语言结构,不是函数
include与require区别:
include引入文件失败,返回警告warning,后续代码继续执行
require引入文件失败,返回fatal error,后续代码不执行
引入的文件为后续代码必须使用的,建议require.
_once作用:
对于已经载入文件,不再进行载入,避免函数的重复定义。
1.全局变量的生命周期
`全局变量的生命周期为脚本的执行周期。`
2.局部变量的生命周期
`局部变量的生命周期:函数调用时创建,到函数调用结束时销毁。
1)time()为10位整型数字。
2)date()
格式化时间戳。
date(格式字符串[,时间戳]);
最常用的格式为:Y-m-d H:i:s
其他格式:
`microtime()`
返回当前的微秒数及时间戳字符串。
使用true参数时,返回对应的浮点数。通常用于生成口令。
生成的令牌:12deb0c64b76dd259c2a451f058564a4
数学函数
1)max(),min()
分别返回最大值及最小值
2)abs()
返回绝对值
3)floor()
向下取整
4)ceil()
向上取整
5)round()
四舍五入
6)rand() 和 mt_rand()
返回随机数
mt_rand生成的速度是rand的四倍多。
7)pow(),sqrt()
power 幂次 pow(x,y)
sqrt:平方根
square 平方 root 根 sqrt
递归思想
1)本质
函数内部去调用函数本身。
2)递归两要素
递归的出口。结束递归调用
递归的调用点(入口):什么情况下函数开始调用本身。
3)应用:阶乘
5! =54!=54321
n! =n (n-1)!
1! = 1;
f(n)表示第n项的阶乘,
f(n)=n*f(n-1);
执行时占用的空间比较大。
迭代思想
5! =1*2*3*4*5
介绍
又称递推。
将已知条件作为迭代的原始值,由原始值推出它的新值。再把这个新值当成下一次的循环的原始值,再来推出下一个新值,以此类推。
执行效率非常高。
案例
使用迭代思想求解阶乘
上传文件错误代码
以下三项可以在php.ini中修改.
upload_max_filesize //上传允许的单文件的最大值
max_file_uploads //上传文件的允许最大数量
post_max_size //上传所有文件字节允许的最大值
对上传文件扩展名的判断
pathinfo(文件名)
上传文件类型的判断(MIME)
利用php_fileinfo.dll对MIME类型进行严格检查:
开启php_fileinfo.dll扩展
$fs = finfo_open(FILEINFO_MIME_TYPE) // 可以理解为返回的是所有PHP支持的MIME类型
$mime = finfo_file($fs,上传的临时文件); //在$fs查询中 上传的临时文件 的MIME,返回文件类型.
目录名中文的处理
如: iconv(‘gbk’,’utf-8’,’你好’) ; //将”你好”由gbk转为utf-8.
Unlink(文件路径); //返回布尔
HTTP请求的构成
构成: 请求行,请求头,[空白行],请求体
Host: 请求的主机名
Connect: 保持连接
User-Agent: 浏览器的相关信息,会自动携带给服务器
Accept: 浏览器所能处理的数据的格式
Accept-Encoding: 浏览器所支持的压缩格式
Accept-Language: 浏览器所支持的语言
If-Modified-Since: 用于询问当前所请求的内容,自从上次是否有修改过
PHP扩展:curl实现数据采集
1.采集
就是收集其他网站(网页)上的信息,并对其进行“为我所用” 的处理!
这种处理比如:存入到数据库,或保存为文件保存起来
2.Curl函数:系统函数,需要去打开php的模块 extension=php_curl.dll
3.原理:
使用该函数,模拟浏览器,根据http请求协议的格式发送请求,该函数能够获得服务器端返回的响应信息
实现四步骤:
第一步:初始化CURL请求. //如: $link = curl_init(网址)
第二步:设置请求选项. //如: curl_setopt = ($link,选项名,选项值);
第三步:执行请求并返回结果. //如: $result = curl_exec($link);
第四步:关闭CURL请求. //如: curl_close($link);
1)301 //域名的永久重定向
2)302 //域名临时重定向
3)304 //直接从本地加载资源
4)403 //没有权限访问
5)404 //所请求的资源不存在
6)500 //主要是来自服务器方面的错误
setcookie ( $name, $value ,$expire , $path ,$domain]
说明:
1) $name //cookie的名称
2) $value // cookie 的值
3) $expire//过期时间,单位, 秒,当前时间戳加上秒数, time()+3600,//有效时间1小时. time()+604800,一周时间
4) $path . // 有效路径, 默认为当前根目录及所有的子目录有效
5) $domain // 有效域名. 默认为当前的域名, 如: [<u>www.abc.com</u>](http://www.abc.com)
如何彻底删除session?
1)unset() //将变量销毁
2)session_destroy()//删除当前session文件
3)将session的id删除 (删除cookie)
4)Setcookie(名,值,time()-99999);
5)Setcookie(session_name(),session_id(),time()-999999)
SESSION的垃圾回收:
什么是SESSION的垃圾回收?
在用户非正确退出时,在服务器生成的session文件会一直存在. 时间一长,这样的文件越来越多. PHP引擎会将这部分文件按时间,按一定的比例进行删除.
SESSION垃圾回收时间(session.gc_maxlifetime), //默认是1440, 即24分钟,文件超过24分钟没有再被访问,即为垃圾文件.
回收的概率(session.gc_probability, session.gc_divisor)
session.gc_probability //默认为1
session.gc_divisor//默认为1000
在php.ini中相关设置
SESSION相关配置
1.session.name = PHPSESSID
2.session.auto_start =0 关闭, 1为自动开启session (不建议自动开启)
3.session.cookie_lifetime=0 //代表浏览器关闭,会话结束
4.session.cookie_path=/ //指定了要session会话 cookie 的有效路径
5.session.cookie_domain //指定了要session会话 cookie 的有效域名
6.脚本设置: 注意: 要在session_start()之前进行设置才有效.
a)ini_set('session.cookie_path', '/');
b)ini_set('session.cookie_domain', '.mydomain.com');
ini_set('session.cookie_lifetime', '1800')