六、PHP知识核心 基础知识

类型总体划分: 标量类型: int, float, string, bool 复合类型: array, object 特殊类型: null, resouce 整数类型:int, integer 整数的3种进制写法: 十进制写法:123 八进制写法: 0123 十六进制写法: 0x123 进制转换问题 十进制转二进制decbin(),除2取余倒着写 十进制转八进制decoct(),除8取余倒着写 十进制转十六进制dechex(),除16取余倒着写 二进制转十进制bindec(),每位数值乘以2的权值然后相加 八进制转十进制octdec() ,每位数值乘以8的权值然后相加 十六进制转十进制hexdec() ,每位数值乘以16的权值然后相加 注意:十进制转为其他进制结果是字符串,其他进制转为十进制要求给定数据是字符串形式 浮点数类型:float,double ,real 浮点数的2种写法: 小数写法: 科学计数法: 关于浮点数的细节知识 浮点数不应进行大小比较 小数转二进制的做法:乘2并顺序取整数部分 当整数运算的结果超出整数的范围后,会自动转换为浮点数。 字符串类型:string 单引号字符串: 双引号字符串: 定界符字符串heredoc: 定界符字符串nowdoc: 字符串中的变量:双引号和heredoc形式中可以识别 布尔类型:bool, boolean 被当作false的数据 :null, "", 0, 0.0, "0", array(), 未定义 其他的都会当作true 数组类型: array 定义: 赋值: 取值: 下标,键,key 值,value 元素顺序问题 对象类型: object 定义类: 创建对象: 对象属性操作: 对象方法操作: 资源类型:resource 含义:基本上都是指对外部数据的引用。 不是PHP语言通过某种语法形式“创造”的数据,而是外部本来就有该数据(比如数据库,文件,图片),PHP只是通过某种语法(或方式)来对其进行某些操作。 空类型:null 类型转换问题: 自动转换: 根据数据所使用的具体环境而可能会发生自动转换, 常见的自动转换情形如: if(数据){}:转为bool类型 算术运算符:转为数字类型 连接运算符:转为字符串类型 比较运算符:转为布尔类型或数字类型 强制转换: 语法:(目标类型)数据 常见:(int), (float), (string), (bool) 类型相关的系统函数: var_dump() getType(), setType(); isset(), empty(), unset(); is_XX类型() 系列函数: 运算符 算术运算符: 一般 注意取余运算%,先取整,再取余 自增自减运算符 常规:对数字进行自加1或自减1。 字符串: 只能自增,且自增的效果就是“下一个字符” 布尔值递增递减无效 null递减无效,递增结果为1 前自增和后自增的区别(自减类似): 前++:先完成变量的递增运算,再取得该变量的值参与别的运算。 后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算。 推论1:如果独立语句中进行自加运算,前自加后自加没有区别 。 推论2:如果前自加后自加是放在别的语句中,则会有所区别。 推论3: 前加加比后加加效率略高(在循环中建议使用前加加)。 比较运算符: 一般比较: ==和===比较 不要对浮点数直接进行大小比较 常见不同类型的比较 有布尔值,转为布尔值比较 有数字转为数字比较 两边都是纯数字字符串,转为数字比较 否则就按字符串比较 逻辑运算符: 短路现象 逻辑与短路: 逻辑或短路: 字符串运算符: 赋值运算符: 标准赋值 自赋值 条件(三目)运算符: 位运算符: 位运算符基本规则: & : 两个都是1,结果才是1(有一个是0,结果就是0) | : 两个都是0,结果才是0(有一个是1,结果就是1) ~ : 取二进制数字的相反值,即:~1的结果是0,~0的结果是1。 按位与运算(&): 按位或运算(|): 按位非运算(~): 按位左移运算(<<): 按位右移运算(>>): 按位异或运算(^): 补充介绍:原码,反码,补码 原码:一个数字的原始二进制形式,人可理解。其中最左1位为符号位,0表示正数,1表示负数。 反码:正数的反码是其本身(即不变),负数的反码:符号位不变,各位取反 补码:正数的补码是其本身(即不变),负数的补码:符号位不变,各位取反后加1(即反码加1) 补码还原:正数无需还原,负数:符号位不变,各位取反加1——三码转换时,符号位独立(不参与转换) 计算机cpu中的运算,只有加法运算,没有减法运算 用补码来表示一个数,就可以将减法转换为加法:15-13相当于15+(-13) ——实际运算时,符号位一起(参与运算) 举例计算:5+3, 5-3 应用:管理一组对象(事物)的开关状态 有些事物(数据)只有2个状态(值),此时可以称为“开关状态”,比如灯的亮灭状态,商品是否推荐状态 用二进制原理可以方便轻松管理多个该类事物的状态: 每个事物的状态用一个变量值来表示:$S1=1,$S2=2,$S3=4,$S4=8,$S5=16,... 则所有灯的总状态变量:$state = "11111"(2进制)就表示他们都是“开”的。$state = "11110"(2进制)就表示第1盏灯是关的,其余是开的。$state="11010"(2进制)就表示第1第3盏灯是关的,其余是开的。 判断某盏灯的状态(亮或灭):如果($state & $Sn)>0,则表示亮,否则表示灭(其中$Sn代表某盏灯,即$S1,$S2,$S3,$S4,$S5之一,下同)。 对于任意的初始状态,想要打开某盏灯:$state = $state | $Sn。 对于任意的初始状态,想要关闭某盏灯:$state = $state & ~$Sn。 数组运算符:+ == != <> === !== 联合(+):将右边的数组项合并到左边数组的后面,得到一个新数组。如有重复键,则结果以左边的为准 相等(==): 如果两个数组具有相同的键名和键值(可以顺序不同,或类型不同),则返回true 不相等(!=, <>) :如果两个数组不是相等(==),则返回true 全等(===):如果两个数组具有相同的键名和键值且顺序和类型都一样,则返回true 不全等(!==) : 如果两个数组不是全等(===),则返回true 错误控制运算符@:用于一个表达式的前面,以抑制该表达式可能产生的报错信息。 运算符的优先级问题 要意识到运算符有优先级问题 括号最优先,赋值最落后(通常) 先乘除后加减 大致:算术运算符〉比较运算符〉逻辑运算符(除了“非”运算) 流程控制: 流程图基本符号:开始结束,语句(块),判断,输入输出,走向 分支结构 if if else if else if(推荐) if elseif if else if else switch break的作用 不使用break的技巧 循环结构: while do while for foreach(用于数组遍历循环) 循环的中断 break continue 中断层级 部分流程控制的替换语法: if ( ... ) : 。。。。 endif; if ( ... ) : 。。。else: 。。。 endif; if ( ... ): 。。。elseif( ... ) : 。。。 elseif( ... ): 。。。 else: 。。。 endif; switch( ... ) : case ... case ... endSwitch; while(...): 。。。endwhile; for(...; ...; ...): :。。。 endfor; goto语句: 基本形式: goto Flag; ... Flag: ..... 注意事项: 不能跳入循环中 不能跳入函数中 不能跳出函数外 不能跳出文件外 控制脚本执行进度 die() / exit(); sleep() 文件加载 综述和基本语法:include, require, include_once, require_once: 文件路径问题 相对路径: ./ ../ 绝对路径: c:/abc/def/ 或:http://www.abc.com 无路径设定(只给出文件名,不推荐) 先在include_path设定的目录中找 没找到,则在网页文件所在目录下找(当前工作目录) 没找到,则在当前include命令所在文件的目录下找 include_path设置,set_include_path(), get_include_path() 文件载入和执行过程: 从include语句处退出php脚本模式(进入html代码模式) 载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样) 退出html模式重新进入php脚本模式,继续之后的代码 include_once 和include的区别 require 和 include的区别:引用失败(出错)时,include警告并继续,require终止。 require 和 require_once的区别 在被载入文件中 return 关键字的作用 默认情况下include载入成功返回1,载入失败返回false 但被包含的文件中可以使用return语句返回数据值并终止该文件的后续部分的执行 return返回的数据如同函数返回值一样可以进一步处理(比如赋值给其他变量) 错误处理: 错误的分类: 语法错误:程序没法运行,直接提示语法错误 运行时错误:只有程序运行到某行,或在某些特定的情形下运行才会发生的错误。 逻辑错误:程序从头到尾运行都没有发生(并提示)错误,但程序运行计算的结果是错误的。 错误分级与代号: 不同的错误会导致不同程度的程序运行反应,这就是错误的分级。 错误代号其实只是一个系统内部常量。也就是说,这些错误代号是一个系统预先定义好的数据,然后系统根据发生的不同错误情形,而分配不同的值供程序员使用来判断错误类型。 系统错误:E_ERROR, E_WARNING, E_NOTICE 用户错误:E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE 所有错误: E_ALL | E_STRICT PHP手册〉函数参考〉影响PHP行为的扩展〉错误处理〉预定义常量 错误的触发: 程序运行时触发。 程序中通过触发函数来人为触发3种用户错误 trigger_error("错误提示文字", 错误类型T) 错误类型T:E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE之一 其中,系统关键错误(E_ERROR)或用户关键错误(E_USER_ERROR)一旦发生,则程序停止执行。 显示错误报告: display_errors = On || Off ,或 ini_set("display_errors", 0或1); error_reporting = E_ALL,或ini_set('error_reporting', E_ALL); 记录错误日志: log_errors = On||Off, 或ini_set('log_errors', 1或0); error_log = "错误日志文件名", 或ini_set('error_log', "错误日志文件名"); error_log = "syslog"则会将错误信息记录到系统日志去。 自定义错误处理器: 设定错误由我们自定义函数来处理:set_error_handler("函数名"); 定义该函数,带4个参数:function errorHandler($errNo, $errMsg, $errFile, $errLine){...} 这样,发生错误之后,就会调用该函数来处理该错误 但如果发生系统关键错误(E_ERROR),则不会去调用自定义错误处理函数,而是会直接停止运行,并按php.ini的设定显示或记录错误信息。 除了系统关键错误,其他错误发生后则不会再去显示或记录错误了,而是按照自定义错误处理函数中的代码执行。

转载于:https://my.oschina.net/fenuangcd/blog/697960

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值