由php if 想到的些问题
2015-01-24信息快讯网
<?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 嵌套得太多,就得重新考虑流程和算法
健壮的代码不是靠过分的判断保证而成的
将代码简化后,会发现很多还未发现的问题
过多的判断另个角度理解,是缺乏对代码的信心
最后,再次感谢 小马 同志。
GBK的页面输出JSON格式的php函数
用PHP ob_start()控制浏览器cache、生成html实现代码
PHP IPV6正则表达式验证代码
php foreach 使用&(与运算符)引用赋值要注意的问题
PHP 截取字符串函数整理(支持gb2312和utf-8)
PHP MYSQL乱码问题,使用SET NAMES utf8校正
PHP 进程锁定问题分析研究
php UTF8 文件的签名问题
浅谈PHP 闭包特性在实际应用中的问题
PHP setcookie() cannot modify header information 的解决方法
Cannot modify header information错误解决方法
php格式化工具Beautify PHP小小BUG
php出现Cannot modify header information问题的解决方法大全
深思 PHP 数组遍历的差异(array_diff 的实现)
附件名前加网站名
php实现mysql数据库备份类
php 常用字符串函数总结
php str_replace的替换漏洞
PHP执行速率优化技巧小结
请php正则走开
PHP4与PHP5的时间格式问题
ZF等常用php框架中存在的问题
Http 1.1 Etag 与 Last-Modified提高php效率
MySQL授权问题总结
解决php中Cannot send session cache limiter 的问题的方法
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
动态生成gif格式的图像要注意?
让你的PHP同时支持GIF、png、JPEG
模拟SQLSERVER的两个函数:dateadd(),datediff()