PHP心得

Wesley13
• 阅读 682

1,花括号“{}”可以像“[]”操作数组一样操作字符串,来获得指定位置的字符。

2,PHP标签“”在独立PHP脚本内可以不写结束标签,这是为了避免意外的空格导致输出而报错。可以用注释来标明脚本结束。

3,echo是语法结构,不是函数。后面跟多个字符串时用逗号“,”效率更好。

4,数组中,1、'1'、true为索引的时候都会强制转换为1。而'01'不会进行转换,会按照字符串处理。

5,将一个类的代码写在不同PHP标签内是不合法的,会报语法错误。而函数则没问题。

6,session与cookie的区别与关系。

  • session保存在服务器上,cookie保存在客户浏览器上;
  • session保存可以是硬盘上的文件、数据库、memcached,cookie可以保存到硬盘(持久cookie)和内存里(会话cookie);
  • session_id传递方式有两种,一是cookie,二是get方式(可以通过 session.name 配置项来指定保存session_id的变量名称)。

7,获得当前时间戳用$_SERVER['REQUEST_TIME']代替time(),可以减少一次函数调用,效率更高。

8,检查字符串是否超过某长度可以用isset($str{n})的语法代替strlen()函数,例如:判断$a的长度是否超过5,可以用isset($a{5})来判断。这样效率更高。

9,header()函数过后要exit,否则后面代码还会执行。

10,大数组用引用传递,减少内存占用,用完就unset()。

11,数据库连接在使用的时候才建立,完全用完了记得关闭连接。

12,set_time_limit()的局限性。只能限制脚本本身的运行时间,对于外部执行的时间无法控制,例如:system()函数,流操作,数据库查询等。

13,abstract和interface的区别:

  • abstract可以有非抽象方法,interface不行;
  • abstract对方法的访问控制可以有protected,而interface必须为public;
  • abstract只能被继承,当然一个类只能继承一个类,而一个类则可以实现多个interface。

14,echo,print,print_r,var_dump,var_export的区别:

  • echo,print是语法结构,不是函数,而且只能显示基本类型,不能显示数组和对象,其他都是函数,可以显示数组和对象;
  • echo 可以显示多个变量,用逗号隔开;
  • print_r第二个参数可以决定是输出变量,还是将变量作为返回值;
  • var_dump会打印变量的详细信息,例如长度和类型,而且可以传递多个变量作为参数;
  • var_export返回的是合法PHP代码格式。

15,验证邮箱: filter_var($email, FILTER_VALIDATE_EMAIL);

16,获取文件扩展名的方法:

  • 一,pathinfo($filename),取extension的值。

  • 二,end(explode('.',$filename))。

17,文件锁定函数flock——的常量参数。

共享锁(读取操作)——LOCK_SH

独占锁(写入操作)——LOCK_EX

释放锁(无论共享还是独占)——LOCK_UN

防堵塞——LOCK_NB

可以通过fclose()函数释放锁定操作。

18,验证字符串是否是合法IP:

不用正则,直接用ip2long(),合法则返回数字,不合法则返回false。

19,PHP 5.3开始,可以使用__DIR__来获得当前脚本所在目录,不用再realpath(__FILE__)了。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这