function mkdirs($pathname, $mode = 0755) {
is_dir(dirname($pathname)) || mkdirs(dirname($pathname), $mode);
return is_dir($pathname) || @mkdir($pathname, $mode);
}递归创建目录用的
函数体中的“或”关系怎么理解?

解决方案 »

  1.   

    false || $a = 'hello world<br/>';
    true  && $b = 'hello php<br/>';
    echo $a;
    echo $b;再联系is_dir的返回值
    =====================
    bool  is_dir ( string filename )
      

  2.   

    你可以把整行看成是if中的条件判断
    a 或 b ,当a是真的时候,整个if条件就满足了,所以不用去执行b,只有当a是假的时候才会去执行b看看能否得到真。
    a 并且 b,当a是假的时候,整个if条件已经不可能满足了,所以不必执行b了,只有当a真的时候才会去执行b看看是否也是真。
      

  3.   

    或 关系中,只要有一个条件成立,其后的条件就不再判断了is_dir(dirname($pathname)) || mkdirs(dirname($pathname), $mode);
    等价于
    if(! is_dir(dirname($pathname))) mkdirs(dirname($pathname), $mode);return is_dir($pathname) || @mkdir($pathname, $mode);
    等价于
    if(is_dir($pathname)) return true;
    else return @mkdir($pathname, $mode);