error_reporting(2047);有什么作用?
这是一道面试题.
无非查找最原始的出处,但可以肯定的是,出这道题的人,肯定是个XX.
欢迎讨论.

解决方案 »

  1.   

    2047 = E_X | E_Y |.....1 E_ERROR  
    2 E_WARNING  
    4 E_PARSE  
    8 E_NOTICE  
    16 E_CORE_ERROR  
    32 E_CORE_WARNING  
    64 E_COMPILE_ERROR  
    128 E_COMPILE_WARNING  
    256 E_USER_ERROR  
    512 E_USER_WARNING  
    1024 E_USER_NOTICE  2048 E_STRICT  
    6143 E_ALL  
    4096 E_RECOVERABLE_ERROR  
    8192 E_DEPRECATED  
    16384 E_USER_DEPRECATED  似乎是E_STRICT之前所有的累积啊
      

  2.   

    没php手册我也不知道具体是哪些,谁吃饱了去背那些值都是
    error_reporting(E_X | E_Y....) 这样用
    否则要定义那些E_X干嘛, 用magic_number那是很初级的
      

  3.   

    只用过error_reporting(7);
    E_ALL 现在好像是 30719
    E_STRICT怎么理解呢
      

  4.   

    ❤酸啊,说不出什么,一般开发调试的时候E_ALL否则会,E_ALL ^ E_NOTICE ^ E_WARNING   我好像习惯了这样?没手册,对应的数字最多能写4个另:LZ说的XX是啥意思呢?
      

  5.   

    面试题都和面试官正相关,也许就是随便出了到题呢?考虑那么多干啥。
    正经回答可以是:
    1)向上面说的那样把原理和结果解释清楚,不过手边没手册的话,也挺难得。
    2) 只解释计算原理
    3) 直接回答不知道
    不正经的回答可以是:
    1) 请查PHP手册;
    2) 给我手册,我能给你答案;
    3) 手册上能查到的东西,哥从不记在脑袋里;
      

  6.   

    error_reporting(2047);有什么作用?启用对一般性错误发出警告功能
      

  7.   

    1 E_ERROR  
    2 E_WARNING  
    4 E_PARSE  
    8 E_NOTICE  
    16 E_CORE_ERROR  
    32 E_CORE_WARNING  
    64 E_COMPILE_ERROR  
    128 E_COMPILE_WARNING  
    256 E_USER_ERROR  
    512 E_USER_WARNING  
    1024 E_USER_NOTICE   意思就是屏蔽这些错误。设置数字时,它似乎用的:if(当前错误号 & 2047 = 当前错误号)
      

  8.   

    其实很多时候,设置信息的属性就可以采用这种方式:
    例如(checkbox选择框):
    推荐(1)□热点(2)□最新(4)□XX(8)□YY(16)□直接保存被选择项的和就可以了。
    在程序或数据库里比如要取XX属性的,
    if($XX & 保存的属性和== $XX)
    where $XX & 保存的属性和 = $XX所以个人感觉php里也是这样的吧。
      

  9.   

    ++
    首贴很好啊,俺计算机原不好,对位计算不了解2047 是前面的总和 ,而且应该是位计算的结果
    (1|2|4|8.....)error_reporting()设置时都采用了位计算
      

  10.   

    1 用数字不是一个好习惯.
    php手册
    http://cn.php.net/manual/en/errorfunc.constants.phpE_ALL
    30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously 2 PHP也是会升级的,好多以前的面试题也应该换换了,或者增加一些前提条件.
      另外, 这样的写法, 本身就是有问题的, 拿来当面试题就更有些说不过去了.
    呵呵.
      

  11.   

    这道题n年前我面试时就考过,现在还在考?如果我再碰到这样的考官我就会问他是否是在浪费你我的时间?如果他说不是的话,我就拿这道题问他,如果他能回答出来我立马消失。error_reporting 的取值是以2的次方定义的如1楼所写的,并且可以使用"|"来进行组合。2047 = 2^11 - 1,就是说这个数值有11个1,组合就是前11项的"|"的组合,要记住11个error_reporting的值,要哪天那个更变态的来个error_reporting(16383)........
      

  12.   


    2047 = E_ALL那是n多年前的事情了。
      

  13.   

    估计当年出这个题目的那时还是到1024这样error_reporting(2047) = error_reporting(E_ALL)只是现在出题人都不花脑子,谷歌一下就照搬来的。