plane
V2EX  ›  PHP

PHP 满满的一个槽点

  •  
  •   plane · Sep 15, 2017 · 11045 views
    This topic created in 3338 days ago, the information mentioned may be changed or developed.

    84 replies  •  2017-10-19 15:16:51 +08:00
    cxbig
    cxbig
    Sep 15, 2017
    1
    这明明是 JSON 的格式问题,干嘛怪 PHP。。。
    autoxbc
    autoxbc
    Sep 15, 2017
    2
    引号?引号肯定不算,不管什么语言都得遵守 RFC
    cxbig
    cxbig
    Sep 15, 2017❤️4
    3
    http://www.json.org
    好好看看 JSON 手册,value 是 string 类型的必须要用双引号。
    ETiV
    ETiV
    Sep 15, 2017
    4
    c 语言的一个槽点:

    int n1 = 0.2, n2 = 1.8;
    int a = n1 + n2;
    printf("a = %d", a); // prints: a = 1
    // we all know it should be 2
    feiyuanqiu
    feiyuanqiu
    Sep 15, 2017
    5
    hah,json_decode/json_encode 之后记得判断 json_last_error() === JSON_ERROR_NONE

    如果你调用一下 json_last_error_msg(),大概就不会发这个槽点了...
    yyfearth
    yyfearth
    Sep 15, 2017
    6
    你用 JS 来 `var json = JSON.parse("{'a':'b'}")`
    照样给你 `Uncaught SyntaxError: Unexpected token ' in JSON at position 1`
    而你用 `var json= {'a':'b'}` 却没问题
    isCyan
    isCyan
    Sep 15, 2017 via Android
    7
    JSON 和 js 对象不是一个东西啊
    askfilm
    askfilm
    Sep 15, 2017
    8
    这明明是 JSON 的格式问题,干嘛怪 PHP。。。 +1
    nameldk
    nameldk
    Sep 15, 2017
    9
    naive
    wly19960911
    wly19960911
    Sep 15, 2017 via Android
    10
    JSON 没有单引号,JSON 没有单引号,JSON 没有单引号
    torbrowserbridge
    torbrowserbridge
    Sep 15, 2017
    11
    楼主尴尬了
    hisune
    hisune
    Sep 15, 2017
    12
    楼主尴尬了
    waczx
    waczx
    Sep 15, 2017
    13
    楼主尴尬了
    caijihui11
    caijihui11
    Sep 15, 2017
    14
    +1
    Efraim
    Efraim
    Sep 15, 2017
    15
    +
    Sor
    Sor
    Sep 15, 2017
    16
    楼主尴尬了
    to2false
    to2false
    Sep 15, 2017
    17
    楼主尴尬了
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Sep 15, 2017
    18
    楼主尴尬了
    justudy
    justudy
    Sep 15, 2017
    19
    楼主尴尬了
    resturlaub
    resturlaub
    Sep 15, 2017
    20
    明明是楼主的 满满的一个槽点
    eoo
    eoo
    Sep 15, 2017 via Android
    21
    楼主尴尬了
    kris7i
    kris7i
    Sep 15, 2017
    22
    楼主尴尬了
    welling
    welling
    Sep 15, 2017 via Android
    23
    楼主尴尬,哈哈哈
    Patrick95
    Patrick95
    Sep 15, 2017
    24
    楼主:擦,为何没有删帖功能。
    xiaohuihui
    xiaohuihui
    Sep 15, 2017
    25
    楼主尴尬 +1
    chairuosen
    chairuosen
    Sep 15, 2017❤️2
    26
    楼主吐槽的应该是有错并不抛,还要手动自己拿吧?
    hheedat
    hheedat
    Sep 15, 2017
    27
    楼主还需要再学习一个
    victoryss
    victoryss
    Sep 15, 2017
    28
    楼主尴尬 +10086
    ydxred
    ydxred
    Sep 15, 2017
    29
    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    Xrong
    Xrong
    Sep 15, 2017
    30
    楼主真心尴尬了。。。
    tabris17
    tabris17
    Sep 15, 2017
    31
    不会用\"转义吗
    ipwx
    ipwx
    Sep 15, 2017
    32
    楼主尴尬了
    imherer
    imherer
    Sep 15, 2017
    33
    。。。
    wucao219101
    wucao219101
    Sep 15, 2017
    34
    楼主又要重新注册一个号了
    cevincheung
    cevincheung
    Sep 15, 2017
    35
    楼主尴尬了
    boks
    boks
    Sep 15, 2017
    36
    吓得我都不敢随便发帖了。
    plane
    plane
    OP
    Sep 15, 2017
    37
    json_decode()返回 Null 不抛出错误 难道不是一个....满满的槽点。
    plane
    plane
    OP
    Sep 15, 2017
    38
    @chairuosen 系呀
    lianxiaoyi
    lianxiaoyi
    Sep 15, 2017
    39
    楼主尴尬了 +10010
    kiwi95
    kiwi95
    Sep 15, 2017 via iPhone
    40
    不要啊老想着把语言批判一番
    zjp
    zjp
    Sep 15, 2017 via Android❤️1
    41
    🙄楼主在注释里说了这里需要用一个错的 Json 字符串…只有#26 是明白人
    plane
    plane
    OP
    Sep 15, 2017
    42
    @feiyuanqiu 还是会发( ˇˍˇ )....
    plane
    plane
    OP
    Sep 15, 2017
    43
    @kiwi95 你们不要老想喜欢弄个大新闻,说现在已经钦定了 php 是最好的语言,就把我批判一番,你们啊,naive....
    xttanwei
    xttanwei
    Sep 15, 2017
    44
    Returns the value encoded in json in appropriate PHP type. Values true, false and null are returned as TRUE, FALSE and NULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.
    Jakesoft
    Jakesoft
    Sep 15, 2017❤️2
    45
    问:json_decode()返回 Null 不抛出错误 难道不是一个....满满的槽点(吗?)
    答:PHP 的原则是,就算你的代码写成一坨屎,它也尽量让你的代码跑下去。


    楼主这个回答满意不, 逃)
    mrgeneral
    mrgeneral
    Sep 15, 2017
    46
    最近这么多黑 PHP 的 真的知道怎么用 PHP 吗
    raysonlu
    raysonlu
    Sep 15, 2017
    47
    @plane null 对于 php 的一般判断来说就是 false 啦,你还想抛出什么错误?要给你个错误提示? or 直接结束脚本执行?
    zjsxwc
    zjsxwc
    Sep 15, 2017
    48
    楼主搞得好像别的语言至此这种不规范的 json 写法一样. 大家都不支持, 没毛病
    TypeErrorNone
    TypeErrorNone
    Sep 15, 2017
    49
    JSON 支持的语法知道吗
    66beta
    66beta
    Sep 15, 2017
    50
    Javascript 惊天大 BUG

    0.1+0.2 = 0.30000000000000004
    g0thic
    g0thic
    Sep 15, 2017
    51
    v2ex 不能删帖系列
    Em5O7B1JGfjQnBry
    Em5O7B1JGfjQnBry
    Sep 15, 2017 via Android
    52
    原来 PHP 是用 null 返回错误的。。。
    wow。。。。。。。。。
    konakona
    konakona
    Sep 15, 2017
    53
    你真的会 PHP 吗? 23333
    json 里字符串是要用双引号的。
    misaka19000
    misaka19000
    Sep 15, 2017 via Android
    54
    我都懒的黑 PHP 了,不过楼主再次让我确定 PHP 果然是世界上最好的语言,果然最好的语言才能造就出像楼主这样的程序员
    AlwaysBee
    AlwaysBee
    Sep 15, 2017
    55
    楼主,惊喜不惊喜?(玩笑~

    不过也是经验的问题吧,会有这样的疑问也不奇怪,下次吐槽谨慎一点
    plane
    plane
    OP
    Sep 15, 2017 via iPhone
    56
    @zjsxwc 别的语言都抛出错误(捂脸) 然鹅大家都跑偏了
    lepig
    lepig
    Sep 15, 2017
    57
    哈哈哈 我笑笑就好
    plane
    plane
    OP
    Sep 15, 2017 via iPhone
    58
    @AlwaysBee 吸取经验...
    miaotaizi
    miaotaizi
    Sep 15, 2017
    59
    可惜不能删帖
    zjsxwc
    zjsxwc
    Sep 15, 2017
    60
    @plane #56

    其实你可以自己封装个抛异常的 json decoder, 或者 composer 上去随便搞个一个封装好的
    plane
    plane
    OP
    Sep 15, 2017
    61
    @raysonlu 推荐你搜一下 json_last_error...
    Elvis0
    Elvis0
    Sep 15, 2017
    62
    哈哈,好尴尬
    iyaozhen
    iyaozhen
    Sep 15, 2017
    63
    不抛异常这个事情确实值得吐槽,但是这也是语言本身的特性,基本靠返回值判断。这也没啥问题呀
    plane
    plane
    OP
    Sep 15, 2017
    64
    @mrgeneral 会不会用跟怎么设计是两回事?
    weilongs
    weilongs
    Sep 15, 2017
    65
    楼主尴尬了
    Phariel
    Phariel
    Sep 15, 2017 via Android
    66
    楼主你试没试过 JSON 里写注释呢 (滑稽
    raysonlu
    raysonlu
    Sep 15, 2017
    67
    @plane 要考虑一下 PHP 的设计意图,如果 json_decode 也抛错误,那如何判断 decode 是否成功了?(如果返回一个对象或数组也显得麻烦),倒不如分开这些功能,coder 想怎么摆弄就怎么摆弄。
    clino
    clino
    Sep 15, 2017
    68
    @ETiV 靠,我还去试了一下...后来定睛一看原来是 int
    miniwade514
    miniwade514
    Sep 15, 2017
    69
    楼上吐槽楼主的,都没看懂楼主的槽点啊,所以楼主还是多写代码少吐槽吧,槽槽相吐何时了
    Alex6
    Alex6
    Sep 15, 2017
    70
    php 一路走到头,当然给你一个 null :-)
    Technetiumer
    Technetiumer
    Sep 15, 2017
    71
    run2
    run2
    Sep 15, 2017
    72
    那么问题来了,这题能不能作为面试题,难道几个 n 年经验的
    Tokin
    Tokin
    Sep 15, 2017
    73
    反正我不是很懂 json,每次想要需要的 json 的时候,我都是先写成数组,然后 php 转成 json。。。
    话说,一般不会出问题才对啊,至少我会在 json_decode 之后 empty 判断一下数组是否有值。。。
    vjnjc
    vjnjc
    Sep 15, 2017
    74
    因为 Java 会抛异常,
    所以必须有捕获逻辑,
    所以所以他们都说 Java 啰嗦
    PHP 身为很简短的语言,当然不抛啦
    usedname
    usedname
    Sep 15, 2017
    75
    https://www.v2ex.com/member/plane
    广州 123 科技有限公司 / 全栈工程师
    goodspb
    goodspb
    Sep 15, 2017 via iPhone
    76
    楼主尴尬了
    pynix
    pynix
    Sep 15, 2017
    77
    楼主尴尬了
    akstrom
    akstrom
    Sep 15, 2017
    78
    @plane php 是弱类型的语言,他对这个不会刻意强制,所以方便的同时也要小心.....
    coooooooode
    coooooooode
    Sep 15, 2017
    79
    你明显可以先看看手册

    ```
    $json[] = "{'aaa': 'bbb'}";
    $result = json_decode($json[0]);
    var_dump($result);
    var_dump(json_last_error(), json_last_error_msg());
    ```

    output:

    NULL
    int(4)
    string(12) "Syntax error"
    barbery
    barbery
    Sep 15, 2017
    80
    年轻人,不要老是想着弄一个大新闻,OK ?
    leekafai
    leekafai
    Sep 15, 2017 via Android
    81
    楼主满满的一个槽点
    KWPr0
    KWPr0
    Sep 15, 2017
    82
    发帖后悔却无法删除甚至无法隐藏系列 日常 V2 笑点 😝
    zthxxx
    zthxxx
    Sep 16, 2017
    83
    楼主满满的一个笑点 #V2 不能删帖日常#
    haierspi
    haierspi
    Oct 19, 2017
    84
    楼主真尴尬... 话说不能删帖是吧?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4998 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 231ms · UTC 08:21 · PVG 16:21 · LAX 00:21 · JFK 03:21
    ♥ Do have faith in what you're doing.