吐槽一下 PHP 的官方实现 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
mantianyu

吐槽一下 PHP 的官方实现

  •  
  •   mantianyu Feb 18, 2014 4572 views
    This topic created in 4453 days ago, the information mentioned may be changed or developed.
    http://www.php.net/manual/en/language.types.boolean.php

    When converting to boolean, the following values are considered FALSE:

    the boolean FALSE itself
    the integer 0 (zero)
    the float 0.0 (zero)
    the empty string, and the string "0"
    an array with zero elements
    an object with zero member variables (PHP 4 only)
    the special type NULL (including unset variables)
    SimpleXML objects created from empty tags

    为什么强转 boolean 时 "0" 被认为是 false, 既然如此, 那 "false" 怎么不认为是 false?
    17 replies    1970-01-01 08:00:00 +08:00
    vibbow
        1
    vibbow  
       Feb 18, 2014
    因为 "false" 是不为空的string
    GordianZ
        2
    GordianZ  
       Feb 18, 2014
    如果 "false" 算 false, 那 "False"/"FaLsE"/"假" 呢?
    joyqi
        3
    joyqi  
       Feb 18, 2014
    这有啥好吐槽的
    yelite
        4
    yelite  
       Feb 18, 2014   1
    我猜是因为url参数和post的表单解析出来直接是string,为了方便php就有了这种设计
    mantianyu
        5
    mantianyu  
    OP
       Feb 18, 2014
    @GordianZ 我就是这个意思, 如果 "false", "False", "FALSE", "NO", "OFF" 都不算 false, 为什么 "0" 是例外?
    mantianyu
        6
    mantianyu  
    OP
       Feb 18, 2014
    @joyqi 跟国风接轨嘛
    vibbow
        7
    vibbow  
       Feb 18, 2014
    @mantianyu 因为 (int)0 和 (string)0 是无痛转换的?
    hanf
        8
    hanf  
       Feb 18, 2014
    php蛋疼又不是两三天了
    infong
        9
    infong  
       Feb 18, 2014   1
    因为 "0" == 0 而且 0 == false
    所以 "0" == false
    liruqi
        10
    liruqi  
       Feb 18, 2014
    你也可以坚持用 === 嘛。
    liuyao729
        11
    liuyao729  
       Feb 18, 2014
    字符串除了 0 就没有为假的了
    likexian
        12
    likexian  
       Feb 18, 2014
    如果非要那么纠结,就忘记php有==,只用===
    jakwings
        13
    jakwings  
       Feb 18, 2014
    @infong 不应该用 == 来作传递性说明的…… == 比较比直接转化为布尔值麻烦多了。
    var_dump("0.0" == 0.0); //=> bool(true)
    var_dump((bool)"0.0"); //=> bool(true)
    var_dump((bool)0.0); //=> bool(false)

    我觉得 yelite 说得比较有道理。
    heirenhua
        14
    heirenhua  
       Feb 19, 2014   1
    @mantianyu 你可以看一下PHP中字符串和数字的转换规则。"0"被认为false,只是因为被转换了。
    nina
        15
    nina  
       Feb 19, 2014
    技术讨论帖 发个招聘小纸条 小交易招资深php开发一名,至少3年实打实的项目经验。PHP高级开发: 15-20k
    岗位职责:
    网站服务端开发,包括后端逻辑以及数据库,缓存等方面。
    岗位要求:
    1、三年以上PHP开发经验,有高并发访问的 Web 应用开发经验;
    2、具备大型开发项目的规划、方案设计以及重构经验的经验;
    3、对 PHP技术及整个解决方案有深刻的理解及熟练的应用,并且精通架构和设计模式,并在此基础上设计产品框架;
    4、精通网络和服务器优化、缓存、分布式存储技术,拥有异构系统开发部署和优化经验;
    5、精通数据库如 Mysql 等的开发 ,熟悉linux shell 脚本的编写,对数据库优化有较深见解。对 memcached 及 NOSql、REDIS 有一定了解;
    6,精通LNMP或LAMP架构。
    7、对计算机系统、网络和安全、应用系统架构等有全面的认识,并有实践基础;
    qq281079797
    lygmqkl
        16
    lygmqkl  
       Feb 19, 2014
    这个应该算自己偷懒的表现,如果你使用的是你自己生成的变量,那么不会有这个疑惑,如果是input进来的自然要做变脸转换,否则php代码的质量如何保证?
    picasso250
        17
    picasso250  
       Feb 20, 2014
    ?is_foo=0
    ?is_foo=1

    var_dump($_GET('is_foo'));
    var_dump((bool)$_GET('is_foo'));
    About     Help     Advertise     Blog     API     FAQ     Solana     1019 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 53ms UTC 22:08 PVG 06:08 LAX 15:08 JFK 18:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86