php基础

phpize
内存用来存储运行的程序及数据。变量名及变量值在内存的不同位置。

image.png

内存组成:
栈区:空间小,运行速度快,存储变量名、函数名、常量名等。
堆区:空间大,运行速度慢,一般存储复杂数据(数组、对象)
全局数据区:
存储变量值、常量值等
代码区:
存储函数、方法。

案例:a=100 创建变量时 将变量值100存储在全局数据区的变量区(产生存储地址oxFF), 在栈区开辟空间,存储变量名a,将变量值的存储地址存储在栈区的变量名中。
读取变量:
$a—栈区拿到变量的在变量区的存储地址oxFF---去对应地址读取值

echo语句
输出字符串、变量及表达式

可以同时输出多个变量及字符串

image.png

print语句
可以输出字符串及变量及表达式
与echo语句的区别为:
print不支持 同输出多个字符串及变量。
为语言结构,不是函数。
var_dump()

输出一个或者多个变量类型,长度及值一般用于打印复杂变量,如数组。

image.png

print_r()

输出变量的值。一般用于打印变量。打印数组相较于var_dump清晰

image.png

删除变量

unset($var);
删除变量名及值之间的对应关系。 变成未定义变量
变量名及变量值不会立即消失,PHP有专门的垃圾回收机制处理。

引用传递

地址传递。
b =&a;
&取地址符号,将a变量的地址赋值给b。
二者指向同一地址
删除一个变量,另外一个不受影响:

image.png

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__
文件所在的目录。

image.png

1)__LINE__
获取当前的行号
image.png

1)__FILE__
获取当前执行脚本的路径及文件名。
image.png

image.png

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

image.png

1.自动转换
PHP本身为弱类型语言,支持类型的自动转换。
数据参与运算时,根据实际环境自动转换类型参与运算。
如算术运算,为数值。
参与算术运算的数据为数值类型。
转换为数值类型的原则:

纯数字组成的字符串转换为相应的数字
可以转换为浮点型的字符,转换为相应的浮点数。
不以数字开头的字符串,转换为0.包括’true’。
布尔型true转换为1,false转换为0.
自动转换后不该变原始变量的数据类型,仅修改参与运算的类型

image.png

image.png

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
其他格式:
image.png
`microtime()`
返回当前的微秒数及时间戳字符串。
使用true参数时,返回对应的浮点数。通常用于生成口令。
生成的令牌:12deb0c64b76dd259c2a451f058564a4
image.png

数学函数

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);
执行时占用的空间比较大。

image.png

迭代思想

5! =1*2*3*4*5
介绍
又称递推。
将已知条件作为迭代的原始值,由原始值推出它的新值。再把这个新值当成下一次的循环的原始值,再来推出下一个新值,以此类推。
执行效率非常高。
案例
使用迭代思想求解阶乘

image.png

上传文件错误代码

image.png

以下三项可以在php.ini中修改.

upload_max_filesize //上传允许的单文件的最大值
max_file_uploads  //上传文件的允许最大数量
post_max_size    //上传所有文件字节允许的最大值
image.png

对上传文件扩展名的判断

image.png

image.png

pathinfo(文件名)
image.png

image.png

上传文件类型的判断(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请求的构成

构成: 请求行,请求头,[空白行],请求体


image.png

image.png

image.png

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  //主要是来自服务器方面的错误
image.png
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')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,793评论 0 38
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,805评论 1 10
  • 一、数据类型 在PHP中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。PHP是一门松散类型...
    大嘴蝸牛阅读 945评论 4 5
  • “我有花一朵 种在我心中 我有花一朵 花香满枝头 我有花一朵 长在我心中。。。” 都说花用来配女人 率真也好 内敛...
    我是燕子啊阅读 455评论 3 4
  • 影响成功的三个对象是:迟疑、质疑、恐惧 恐惧的雏形就是犹豫。犹豫可以转化成怀疑,两者融合会产生恐惧,犹豫和怀...
    邓慧娟阅读 75评论 1 1