笔记源自---PHP必须知道的300个问题

一、提高编程效率

1、echo中字符串用单引号包含起来会比用双引号快。

2、$row['id']的速度要比$row[id]快很多。

3、echo比print快,并且使用echo的多重参数代替字符串连接(比如:echo $str1,$str2;)

4、尽量使用foreach代替while和for循环。

5、注销那些不用的变量,尤其是大数组,以便释放内存。

6、尽量不使用_get、_set、_autoload。(我不会用的,因为不知道用法哈哈哈)

7、使用include()包含文件时,尽量使用绝对路径,因为省去解析操作系统所需的时间。

8、获取脚本开始执行的时间 (即服务器端收到客户端请求的时间),使用$_SERVER['REQUEST_TIME']要优于time()。

9、在项目中尽量应用PHP内置函数,同时尽量使用函数代替正则表达式完成相同的功能。

10、str_replace函数比preg_replace函数快,但strtr函数效率比str_replace函数高。

11、选择分支语句switch优于多个if、else if语句。

12、连接数据库时,尽量使用短连接,要及时关闭使用完毕的数据库连接。

13、在方法中递增局部变量速度是最快的,相当于在函数中调用局部变量。

14、派生类中的方法运行起来要快于在基类中定义同样的方法,尽量将类的方法定义成static。

15、尽量少进行文件操作。

16、Apache解析一个PHP脚本时间要比解析一个静态HTML页面慢很多,多用HTML页面,少用PHP脚本。除非脚本可以缓存,引入PHP缓存机制可以免除编译开销,提升性能。

17、$i++会比++$i慢。

18、检验字符串长度时常用strlen(),也可以使用isset()加速执行代码。

$str='www.baidu.com';
if(strlen($str)<5){echo "未满5";}
if(!isset($str{5})){echo "未满5";}

二、为什么页面间无法传递变量?

为了提高安全性,在php.ini中的register_globals的值为Off。若想获取表单提交的数据,则必须使用$_GET['']、$_POST['']或$_SESSION['']。

使用$_SESSION['']保存变量值后任何页面都可以使用,但很耗费系统资源,慎用。

三、如何从文本中移除空白内容?

trim()函数

四、如何获取上传文件的后缀?

explode()

$file = 'xy.png';
$arr=explode('.', $file);
echo end($arr); //end()返回数组的最后一个元素

strstr():获取一个指定字符串在另一个字符串中首次出现的位置到后者末尾的子字符串。区分大小写。

$file = 'xy.png';
$name = strstr($file,"."); //变量name的值为 .png

五、如何实现货币数据的格式化输出?

number_format(number,decimals,decimalpoint,separator)

echo number_format("5000000");            //5,000,000
echo number_format("5000000",2); //5,000,000.00
echo number_format("5000000",2,",","."); //5.000.000,00

六、如何解决对中文字符串截取时的出现乱码

substr()是按字节截取字符串的,一个英文占一个字节,一个中文占两个字节,而对于一个UTF-8的中文字符,会把它当做3个字节来处理。所以只要计算清楚就没问题。

Php给出了另外的函数mb_strlen和mb_substr。它会将为UTF-8编码的中文字符算作一个。

注意:mb_strlen与mb_substr并不是PHP的核心函数,使用前需要打开php.ini中的extension=php_mbstring.dll这一项。

七、如何获取多个数组元素的键名

$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
echo array_search("X5",$a); //返回第一个匹配的键名
print_r(array_keys($a)); //返回数组中所有的键名
print_r(array_keys($a,"Highlander")); //只返回该值的键名

array_keys(array,value,strict)

八、数组索引加单引号、双引号或无引号有区别吗?

第一种:$array['key']    直接被解析为一个数组即$array

第二种:$array["key"]   先执行的是"key",判断是否有定义的PHP变量存在,再解析为数组即$array

第三种:$array[key]     会先分析局部作用于是否有key键值定义的常量存在,即define('key','val'),然后解析数组即$array

九、如何对查询关键字进行描红?

if($_POST[submit])                                                      //搜索按钮
{
$a = "<b style='color:red;font-size:18px;'>".$_POST[text]."</b>";
echo str_replace("$_POST[text]",$a,$str); //$_POST[text]为关键字,$a为描红的字符串,$str变量为被搜索的文本,
}

十、屏蔽违禁词语

①先将违禁词语放在文本文件。

②file_get_contents()获取文本内容。

③trim()去掉获取到的文本的空白,explode()转成数组。(注:explode("\n",$content) 加双引号)

④循环判断文章是否有违禁词语。strpos($text,$arr[$i])  (注:$text是文章内容变量,$arr[$i]是违禁词语数组)

十一、如何创建新型字符串

$ip=<<<strmark          //以<<<strmark开始
2019年4月23日 11:21:05 //这里是字符串
记录的
strmark; //以strmark;结束
var_dump($ip);

PHP知识点记录的更多相关文章

  1. C#知识点记录

    用于记录C#知识要点. 参考:CLR via C#.C#并发编程.MSDN.百度 记录方式:读每本书,先看一遍,然后第二遍的时候,写笔记. CLR:公共语言运行时(Common Language Ru ...

  2. spring mvc开发过程知识点记录

    给一个客户做的一个小项目,需求就是输入类似一个短网址http://dd.yy/xxxx然后跳转到另外一个域名下的图书文件.(实际很多短网址站都提供API供调用吧,不过客户需求是他自己建立一个短网址服务 ...

  3. javascript知识点记录(1)

    javascript一些知识点记录 1.substring,slice,substr的用法 substring 和slice 都有startIndex 和 endIndex(不包括endInex),区 ...

  4. JavaScript算法与数据结构知识点记录

    JavaScript算法与数据结构知识点记录 zhanweifu

  5. DB知识点记录

    DB知识点记录 分页 SqlServer:ROW_NUMBER () over (ORDER BY ID) AS RN, MySql:limit Oracle:ROWNUM AS RN 数据表的基本结 ...

  6. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录

    前言:使用PHP和MySQL开发后台管理系统的过程中,发现有一些通用的[套路小Tip],这里集中记录一下.结合工作中ing的后台业务,我逐渐体会到:除了技术知识外.能使用户体验好的“使用流程设计”积累 ...

  7. 计算机二级C语言选择题错题知识点记录。

    计算机二级C语言选择题错题知识点记录. 1,在数据流图中,用标有名字的箭头表示数据流.在程序流程图中,用标有名字的箭头表示控制流. 2,结构化程序设计的基本原则:自顶向下,逐步求精,模块化,限制使用g ...

  8. Javascript知识点记录(三)设计模式

    Javascript设计模式记录,这个方面确实是没写过,工作中也没有用到js设计模式的地方. prototype与面向对象取舍 使用prototype原型继承和使用面向对象,都可以实现闭包的效果.那么 ...

  9. Javascript知识点记录(二)

    Javascript入门易,精通难,基本上是共识的一个观点.在这个篇幅里,主要对一些难点进行记录. 鸭子类型 Javascript属于动态类型语言的一种.对变量类型的宽容,给了很大的灵活性.由于无需类 ...

  10. C# 知识点记录(持续更新中)

    从看C#入门经典开始系统的学习C#,本文主要记录学习过程中的一些知识点,也是我博客生涯的开始,比较重要成体系的部分会单重新写文章整理归纳. 1.一字不变的字符串 @字符 使转义序列不被处理,按照原样输 ...

随机推荐

  1. 接口自动化:HttpClient + TestNG + Java(二) - 第一个接口测试:get请求

    在上一篇中,我们搭建好了HttpClient + TestNG + Java的自动化接口测试环境,这一篇我们就赶紧开始编写我们的第一个接口测试用例. 本篇会对问题解决的思路进行更详尽的阐述. 2.1 ...

  2. SLAM+语音机器人DIY系列:(四)差分底盘设计——4.底盘ROS驱动开发

    摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...

  3. WPF ResourceDictionary 主题资源替换(一)

    当我们需要在程序中替换主题,更换另一套背景.颜色.样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Ke ...

  4. 授权管理-LDAP-介绍与环境搭建

    LDAP介绍 转自:https://blog.csdn.net/tanshizhen119/article/details/79942315 还是先来百度百科介绍. LDAP是轻量目录访问协议,英文全 ...

  5. Nginx + Keepalived实现应用高可用负载均衡功能

    说明:此处仅介绍 Keepalived 实现nginx负载均衡器的高可用,关于nginx介绍和负载均衡实现可查看我的另两篇博文 Nginx负载均衡 和 Nginx配置了解 应用背景:实现高可用,避免单 ...

  6. webstorm 2018.2.3 license server

    推荐地址:http://idea.lanyus.com/ 使用前请将“0.0.0.0 account.jetbrains.com”添加到hosts文件中

  7. 【土旦】在vue filters中 优雅的使用对象的key、value来替换 if switch多重判断简化流程

    前言 之前写过滤器的时候都是 用 if switch 来进行值的判断 返回对应的值, 在没去百度搜索之前都是都是这样写的 ) { return "支付成功"; } ) { retu ...

  8. [置顶]生鲜配送管理系统_升鲜宝V2.0 销售订单汇总_采购任务分配功能_操作说明

    做好生鲜供应链系统,要注意三个方面,1.分拣 2 采购  3 库存,市面上做的比较成熟的功能,还是分拣这一块(按客户分拣.按订单分拣.按商品分类分拣.按商品分拣.按线路分拣.客户自由组合分拣)[下篇文 ...

  9. 魅族5.0以上设备(亲测有效)激活Xposed框架的流程

    对于喜欢研究手机的哥们来说,大多时候会使用到Xposed框架及种种功能强大的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活Xposed框架是比较简单的,但随着系统版本的持续更新 ...

  10. webstorm2018.1 汉化

    https://github.com/pingfangx/TranslatorX 这个百度云 选择webstorm 选择勾选的文件 选择你下载webstorm 的版本 我下载的是2018.1的 之后等 ...