笔记源自---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. OpenCV各版本差异与演化,从1.x到4.0

    博客:blog.shinelee.me | 博客园 | CSDN 写在前面 最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机 ...

  2. Docker进阶之五:容器管理

    容器管理 一.创建容器常用选项 docker container --help 指令 描述 资源限制指令 -i, --interactive 交互式 -m,--memory 容器可以使用的最大内存量 ...

  3. C# 添加枚举中文资源

    在业务开发过程中,添加枚举,在固定枚举值的同时,也需要中文的文案. 如果不想添加语言资源项.添加枚举转语资源项,可以使用特性标记. 属性描述 DescriptionAttribute 先看案例: pu ...

  4. .NET垃圾回收机制 GC

    线程栈 stuck:存值类型,和引用类型的引用  先进后出,链表形式,连续摆放 CLR(公共语言运行库(Common Language Runtime))启动进程,main函数为一个线程入口 进程堆h ...

  5. 基于python的种子搜索网站-项目部署

    本讲会对种子搜索网站的部署过程进行详细的讲解. 网站演示: https://bt.mypython.me 源码地址: https://github.com/geeeeeeeek/bt 项目部署过程 系 ...

  6. HTML之body标签中的相关标签补充

    一 列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: a.ul:unordered list,“无序列表”的意思. b.li ...

  7. U813.0操作员功能权限和数据权限的设置

    操作员的权限有功能权限.数据权限.金额权限. 1. 给操作员设置功能权限,操作员才能进入系统进行相关业务操作. Admin用户登录无法修改账套,但可以新建.引入.输出.Demo用户每次只能进入一个账套 ...

  8. Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

    目录 目录 1.介绍 1.1.什么是 Bamboo? 2.Bamboo 的官网在哪里? 3.如何下载安装? 4.对 Bamboo 进行配置 4.1.获取授权许可 4.2.一般配置 4.3.数据库配置 ...

  9. spring boot整合Hadoop

    最近需要用spring boot + mybatis整合hadoop,其中也有碰到一些坑,记录下来方便后面的人少走些弯路. 背景呢是因为需要在 web 中上传文件到 hdfs ,所以需要在spring ...

  10. TestLink-Windows安装教程

    TestLink-Windows安装教程 QQ群交流:585499566 一.这篇文章的目的 以后工作中要使用Testlink来管理测试的流程,需要在本地或者Testlink服务器上练习使用,在个人本 ...