V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jacob
V2EX  ›  PHP

php 字符串插值为何这么变态

  •  
  •   jacob · 2014-10-12 18:16:38 +08:00 · 4542 次点击
    这是一个创建于 3686 天前的主题,其中的信息可能已经有所发展或是发生改变。

    难道在双引号里不需要告诉解释器:我要插入了。

    echo "$plug in";
    

    ruby
    ruby
    puts "#{plug} in"

    27 条回复    2014-10-13 12:53:50 +08:00
    kankana
        1
    kankana  
       2014-10-12 18:22:12 +08:00
    echo "{$plug} in";

    echo "${plug} in";

    要不你用这个吧
    jacob
        2
    jacob  
    OP
       2014-10-12 18:39:20 +08:00
    @kankana 我感觉我发了个很愚蠢的帖子
    jacob
        3
    jacob  
    OP
       2014-10-12 18:39:49 +08:00
    我很想删了- -||
    xoxo
        4
    xoxo  
       2014-10-12 18:41:31 +08:00   ❤️ 1
    撸主刚学PHP吧,PHP是世界上最好的语言
    kankana
        5
    kankana  
       2014-10-12 19:04:15 +08:00
    @xoxo 哈哈, 你这是要挑起战争啊
    rming
        6
    rming  
       2014-10-12 19:25:05 +08:00
    @xoxo PHP大法好
    LINAICAI
        7
    LINAICAI  
       2014-10-12 19:33:38 +08:00
    php单双引号简直让人不忍直视~
    regmach
        8
    regmach  
       2014-10-12 19:36:02 +08:00
    @xoxo
    我不管PHP好不好,我就知道其他的我学! 不!! 会!!!
    rming
        9
    rming  
       2014-10-12 19:38:00 +08:00
    @LINAICAI 知道我看到了Python的三引号 = =!
    belin520
        10
    belin520  
       2014-10-12 19:38:02 +08:00
    嗤~
    qiayue
        11
    qiayue  
       2014-10-12 20:14:30 +08:00
    因为 PHP 变量前有 “$” 所以不需要其他标识就能够知道哪些是变量名。
    然后 PHP 会解析双引号里边变量。
    Jaylee
        12
    Jaylee  
       2014-10-12 21:23:19 +08:00
    撸主刚学PHP吧,PHP是世界上最好的语言
    14
        13
    14  
       2014-10-12 21:40:14 +08:00
    想到php最初是Personal Home Page,作者写简历用的,也就理解了。。。
    lazyphp
        14
    lazyphp  
       2014-10-12 22:16:35 +08:00
    扩展贴:php 的 $符号好奇葩。
    ichou
        15
    ichou  
       2014-10-12 22:31:44 +08:00
    而且我告诉你 露珠
    php 的双引号无论不插不插值 执行效率都比单引号低 所以推荐使用单引号
    想想那通篇有插值用双引号 没插值用单引号的文本 给强迫症看真是爽歪歪啊
    zts1993
        16
    zts1993  
       2014-10-12 22:36:35 +08:00
    echo "$plug in";

    如果替换变量应该这样写。
    echo '$plug in';
    如果非要用双引号
    echo "\$plug in";
    lincanbin
        17
    lincanbin  
       2014-10-12 22:49:15 +08:00
    PHP官方文档里都写了,推荐使用单引号,需要变量再拼接。
    kslr
        18
    kslr  
       2014-10-12 23:19:14 +08:00
    那优化到最后就是:echo $plug.'in';

    楼主,你的;是中文的!
    GTim
        19
    GTim  
       2014-10-12 23:20:59 +08:00
    @ichou 因为插不插入,它都要试图查找和解析一下里面的$符号.
    weegc
        20
    weegc  
       2014-10-12 23:46:26 +08:00
    单引号是单纯的字符串 php不解析里面的变量之类的东东
    双引号里面的变量 php会去解析
    spacewander
        21
    spacewander  
       2014-10-12 23:56:09 +08:00   ❤️ 1
    lz的PHP代码:
    echo "$plug in";
    拿到shell上也能正确运行……

    不客气的结论:lz有点少见多怪了。
    iyaozhen
        22
    iyaozhen  
       2014-10-13 00:24:04 +08:00
    @ichou php的单引号和双引号目前效率都差不多,反而字符串拼接会影响性能。
    http://www.phpbench.com/
    iyaozhen
        23
    iyaozhen  
       2014-10-13 00:28:41 +08:00
    @lincanbin php官方文档有说推荐单引号吗?目前的php版本两者效率相当http://www.phpbench.com/。
    konakona
        24
    konakona  
       2014-10-13 01:47:56 +08:00
    双引号代表转义,单引号代表不转义。
    两者之间只有微妙的效率差异,即便在大项目中也不会有任何影响,纯粹是个人喜好的问题。

    然而php在变量这一块的写法是多姿多彩的……
    kankana
        25
    kankana  
       2014-10-13 07:48:06 +08:00
    @iyaozhen

    单引号和双引号的效率, micro optimization挺无聊的说
    iyaozhen
        26
    iyaozhen  
       2014-10-13 10:16:23 +08:00
    @kankana
    嗯,还是喜欢使用C语言的习惯,字符用单引号,字符串用双引号。字符串里面插值用"str{$var}str"。
    jacob
        27
    jacob  
    OP
       2014-10-13 12:53:50 +08:00
    @kslr 嘿嘿,还有点不习惯写分好了,经常忘掉。
    @14 有点像:当我有什么想不通的时候,一想到我“用的是php”(在天朝)就都通了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:20 · PVG 14:20 · LAX 22:20 · JFK 01:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.