由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 相关文章推荐
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
php实现RSA加密类实例
Mar 26 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP递归实现层级树状展开
Apr 01 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 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
thinkphp模板输出技巧汇总
2014/11/24 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
js module大战
2019/04/19 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
python版简单工厂模式
2017/10/16 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
python数据化运营的重要意义
2019/11/25 Python
python和JavaScript哪个容易上手
2020/06/23 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
毕业生文员求职信
2013/11/03 职场文书
生产现场工艺工程师岗位职责
2013/11/28 职场文书
公司授权委托书范本
2014/04/03 职场文书
国际会计专业求职信
2014/08/04 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python