我的编程空间,编程开发者的网络收藏夹
学习永远不晚

经验总结以及细节问题汇总

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

经验总结以及细节问题汇总

按位与计算是否为基数

$var & 1;//$var 为整数奇数 该结果为true,即‘&’符号可以用来判断是否为奇数

有意忽略php关闭标签

这將节约你很多时间,

我们举个例子://一个 super_class.php 文件

//super extra character after the closing tag

index.phprequire_once('super_class.php');//echo an image or pdf, or set the cookies or session data

这样,你將会得到一个 Headers already send error。为什么?因为 “super extra character” 已经被输出了。现在你得开始调试啦。这会花费大量时间寻找 super extra 的位置。因此,养成省略关闭符的习惯:

 

这回更好.

更改应用创建的文件权限

在linux环境中,权限问题可能会浪费你很多时间。从今往后,无论何时,当你创建一些文件后,确保使用chmod设置正确权限。否则的话,可能文件先是由”php”用户创建,但你用其它的用户登录工作,系统將会拒绝访问或打开文件,你不得不奋力获取root权限,更改文件的权限等等。

1 //Read and write for owner, read for everybody else2 chmod('somedir/somefile', 0644);3 //Everything for owner, read and exceute for others4 chmod('somedir/somefile', 0755);

也就是创建文件的同时,要设置正确的文件权限

使用echo取代print

使用str_replace取代preg_replace,除非你绝对需要

不要使用 short tag

简单字符串用单引号取代双引号

head重定向后记得使用exit

不要在循环中调用函数

isset比strlen快

始中如一的格式化代码

不要删除循环或者if-else的括号

尽量不要用COUNT,能用ISSET用ISSET替代,比如ISSET($a[499])代替COUNT($a)==500

字符串与变量进行判断,字符串在前变量在后,防止少写一个等号,变成赋值操作。如:‘aa’==$a代替$a=='aa'

大数组尽量不要作为参数传递,如果非要传递,可以用传引用传参或者设置静态变量

尽量用===代替==

变量值判断是否是等于某个数字或者大于某个数字等,不要直接int($a)判断,要先判断是否是数字,如使用is_numeric($a)

时刻小心精度丢失的情况

$f = 0.58; echo intval($f * 100); // 输出57 sprintf("%.2f",$f * 100); //输出58.00

Hash比较

在进行hash比较的时候会存在问题。如下:

"0e132456789"=="0e7124511451155" //true"0e123456abc"=="0e1dddada"    //false"0e1abc"=="0"     //true

在进行比较运算时,如果遇到了0e\d+这种字符串,就会将这种字符串解析为科学计数法。所以上面例子中2个数的值都是0因而就相等了。如果不满足0e\d+这种模式就不会相等。这个题目在攻防平台中的md5 collision就有考到。

十六进制转换

还存在一种十六进制余字符串进行比较运算时的问题。例子如下:

"0x1e240"=="123456"        //true"0x1e240"==123456        //true"0x1e240"=="1e240"        //false

当其中的一个字符串是0x开头的时候,PHP会将此字符串解析成为十进制然后再进行比较,0x1240解析成为十进制就是123456,所以与int类型和string类型的123456比较都是相等。攻防平台中的起名字真难就是考察的这个特性。

in_array()

in_array()函数的第三个参数大多数情况都要传true,使其等价于全等于判断

尤其你的数组里有可能字符串和整数类型同时存在的场景下!

在PHP手册中,in_array()函数的解释是bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ),如果strict参数没有提供,$strict默认值false,那么in_array就会使用松散比较来判断$needle是否在$haystack中。当strince的值为true时,in_array()会比较needls的类型和haystack中的类型是否相同。

$array=[0,1,2,'3'];var_dump(in_array('abc', $array));  //truevar_dump(in_array('1bc', $array));    //true

可以看到上面的情况返回的都是true,因为’abc’会转换为0,’1bc’转换为1。array_search()与in_array()也是一样的问题。

来源地址:https://blog.csdn.net/weixin_39171666/article/details/130775509

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

经验总结以及细节问题汇总

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

CSS开发心得:解决常见问题的项目经验总结

CSS(层叠样式表)作为前端开发中不可或缺的一部分,负责页面的样式设计与布局。在项目开发过程中,我们常常会碰到一些常见的CSS问题,解决这些问题是提高项目开发效率和质量的重要环节。本文将总结一些解决常见CSS问题的项目经验,希望能为开发者们
CSS开发心得:解决常见问题的项目经验总结
2023-11-03

Discuz教程之关于安装使用时的一些小细节问题的总结

首先先看一下安装教程https://www.jb51.net/cms/17055_2.html下面我们以问答的形式来说明: Q:請問如何實現版主跨版評分?A:后台》全局》用户权限》版主评分限制:否Q:如何设置限制评分数额?A:后台》用户》管
2022-06-12

联想yoga升级Win8.1系统教程以及常见问题解决方法汇总介绍

近日微软正式放出了Win8.1更新和下载。凡Win8用户均可通过应用商店升级到Win8.1系统。联想Yoga13可以完美免费升级到Win8.1。下面给大家带来联想yoga升级Win8.1教程和Win8.1驱动下载,以及升级后的几个常见问题的
2022-06-04

【问题思考总结】为什么B树中的搜索可以在分支结点上结束,而B+树必须到叶节点上才能结束?

问题提出 在刷到B+树的时候,发现王道书上写B+树非叶子结点仅仅起到索引作用,没有关键字对应记录的存储地址。 然而,观察B树的存储结构,我们发现,其中对于每个结点,也仅有结点的关键字信息和指向子树的指针,并没有关键字存储记录的存储地址。
2023-08-30

如何通过MySQL设计规约规避常见的数据库错误和问题?技术同学必备经验总结!

如何通过MySQL设计规约规避常见的数据库错误和问题?技术同学必备经验总结!摘要:MySQL是一种广泛使用的关系型数据库管理系统,但在实际应用中,由于设计不当、配置问题或者使用不当等原因,会出现一系列的数据库错误和问题。本文总结了一些常见的
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录