由php if 想到的些问题


Posted in PHP onMarch 22, 2008
<?php  
/* PHP code */  
header("Content-type: text/javascript");  
if (!haveCookie('cookieName')) {  
   // ... do something  
?>  
/* Javascript code */  
if ('undefined' == typeof document.cookie['cookieName']) {  
    setCookie('cookieName', 3600);  
}     // ... do something with Javascript  
<?php  
}  
?>

粗看起来代码已经无懈可击,我们亲爱的 小马 还是发现了问题的存在。就是在 Javascript 中的那个判断是永远为 true
if ('undefined' == typeof document.cookie['cookieName']) {  
    // ...  
}

因为这段代码是在 PHP 端有个前提,就是

if (!haveCookie('cookieName'))的时候,才会在客户端显示。那么,当不满足这一条件,这段代码自然就不会扔给客户端。这样说似乎有点笼统,那么先撇开 Javascript 代码,我们就单纯使用 PHP 代码表述一下

<?php  
header("Content-type: text/javascript");  
if (!haveCookie('cookieName')) {  
   if (!haveCookie('cookieName')) {  
       setCookie('cookieName');  
   }  
}  
?>

这样就显得清晰了很多,并很容易就能发现问题所在 -- 我们在不经意间就多做了一次判断,虽然这是 Javascript 在客户端执行的。

总结下,本人从这段代码想到的些废话:

代码越长,不见得效率就越高
在不影响逻辑和流程的情况下,尽量将多个判断写在一起
尽量将低复杂度的函数放前判断
过多的判断容易造成程序效率降低,在判断中使用高时间复杂度的函数时尤其要注意
如果发现 if 嵌套得太多,就得重新考虑流程和算法
健壮的代码不是靠过分的判断保证而成的
将代码简化后,会发现很多还未发现的问题
过多的判断另个角度理解,是缺乏对代码的信心
最后,再次感谢 小马 同志。

PHP 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
php二分查找二种实现示例
Mar 12 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
php实现的简单日志写入函数
Mar 31 PHP
php中JSON的使用方法
Apr 30 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
django中的ajax组件教程详解
Oct 18 PHP
php引用和拷贝的区别知识点总结
Sep 23 PHP
php实现mysql数据库备份类
Mar 20 #PHP
php 常用字符串函数总结
Mar 15 #PHP
php str_replace的替换漏洞
Mar 15 #PHP
PHP执行速率优化技巧小结
Mar 15 #PHP
请php正则走开
Mar 15 #PHP
可以在线执行PHP代码包装修正版
Mar 15 #PHP
PHP Token(令牌)设计
Mar 15 #PHP
You might like
4.与数据库的连接
2006/10/09 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
php上传文件问题汇总
2015/01/30 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
php7 新增功能实例总结
2020/05/25 PHP
jQuery function的正确书写方法
2013/08/02 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Linux下编译安装MySQL-Python教程
2015/02/02 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python3远程监控程序的实现方法
2019/07/15 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
家长写给老师的建议书
2014/03/13 职场文书
数学教育专业求职信
2014/07/22 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
linux下安装redis图文详细步骤
2021/12/04 Redis