今日读代码,看到一行不理解:
$dbname && @mysql_select_db($dbname, $this->link);
初看这一行,没放到if条件中,也没有变量保存判断的结果,在QQ群中问了一下,有人指点说:php中 && 判断时,第1个条件不成立时,不判断后面的条件。不禁记起C中也有这样的情况。写了简单的例子测试了一下,确实如此。其实,上述的一行代码,可以转换为一个if语句,如下:
后来,研究了一下用&&和if的执行效率情况,从2次测试结果来看,用if的效率是要高于&&的。测试结果数据如下:
-----------循环:100000000 次
&& 方式:22秒
if 方式:20秒
----------- 循环:1000000000 次
&& 方式:212秒
if 方式:202秒
ps:上述跑的都是让第2行执行了的情况,即执行了&&后面的语句、if条件时的执行语句。对于&& 前第一个条件结果为true 、if条件不成立的情况暂没看
从上面的情况来看,还是尽量用if要好一点,用&&的话,降低了代码可读性(当然也跟阅读人的使用习惯有关,我很少用这个,所以咋一看,愣是不明白)