由php if 想到的些问题

yipeiwu_com6年前PHP代码库
复制代码 代码如下:

<?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使用escapeshellarg时中文被过滤的解决方法

本文分析了php使用escapeshellarg时中文被过滤的解决方法。分享给大家供大家参考。具体如下: 一、问题: 同样的代码,发现通过 localhost/index.php 访问,...

有关JSON以及JSON在PHP中的应用

JSON 基础 简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客...

PHP实现恶意DDOS攻击避免带宽占用问题方法

使用PHP代码实现的DDOS攻击会导致带宽被占用,变成卡B。 处理办法是: 修改php.ini文件 1) "disable_functions"改成gzinflate,默认是放空 2)...

php批量添加数据与批量更新数据的实现方法

本文实例讲述了php批量添加数据与批量更新数据的实现方法。分享给大家供大家参考。具体分析如下: php如果要批量保存数据我们只要使用sql的insert into语句就可能实现数据批量保...

PHP使用feof()函数读文件的方法

本文实例讲述了PHP使用feof()函数读文件的方法。分享给大家供大家参考。具体用法如下: feof应用于PHP 4, PHP 5 -用来测试文件指针是否到了文件结束的位置。 如果服务...