$mid = '1294917455';
$aProps = array(1,2,3);
if ( !$mid =  stripcslashes($mid) || !is_array( $aProps)) {
    echo $mid;
}
这个$mid你们知道是多少不?
上次两段代码打印出来的mid为什么区别这么大,求解释
$mid = '1294917455';
$aProps = array(1,2,3);
if ( (!$mid =  stripcslashes($mid)) || !is_array( $aProps)) {
    echo $mid;
}

解决方案 »

  1.   

    if ( ($mid !=  stripcslashes($mid)) || !is_array( $aProps)) 
      

  2.   

    PHP操作符优先级参见上面给出的文档
    对于
    if ( !$mid =  stripcslashes($mid) || !is_array( $aProps))||运算符优先级高于=, 所以, 上面代码PHP执行时顺序为
    if ( !$mid =  (stripcslashes($mid) || !is_array( $aProps)))另1/3楼所说将=错看==也不见得..在条件表达式中使用赋值, 是一种编程手法, 可以让你的代码更加紧凑, 比如数据库操作中经常使用的
    while($row = mysql_fetch_xxx()) {
    }
      

  3.   


    所谓条件表达式是一个代表布尔值的表达式, 在PHP的处理中, 这里的条件表达式可以是任意表达式, PHP在if(), while()等需要布尔值的地方, 会自动将其转换为布尔值.因此, 那里用什么符号是不重要的, 重要的是整个表达式的返回值.对于楼主的问题而言, 其中有一个赋值表达式, 赋值表达式的返回值是其左值经过计算的值...
      

  4.   

    对于资源型数据(并不特指PHP中的Resource)的缓冲或多次读取, 通常都会采用这种语法
    while(xxx = read){
        statement;
    }