【问题标题】:How to end a variable name in string without space如何在没有空格的字符串中结束变量名
【发布时间】:2012-06-13 14:57:33
【问题描述】:

如何在不使用空格或任何其他特殊字符的情况下结束字符串中的变量名?

例如,我可以在$numst 之间放置任何内容以输出1st 而不是1 st

$num = 1;
echo "$num st";

不使用点运算符进行连接

【问题讨论】:

  • 是的,你绝不能使用连接......即使它给你你需要的输出,它就是如此邪恶和错误
  • @MarkBaker 你是认真的还是讽刺的??
  • 也许我需要更讽刺一些,因为很明显我不是很明显
  • 我是这么认为的,但我不确定,因为有些人肯定对这样的事情有非常强烈的看法,这很奇怪:)

标签: php


【解决方案1】:

用大括号括起来变量的名称。

$num = 1;
echo "${num}st";

或者使用printf语法代替简单的插值:

$num = 1;
printf("%dst", $num);

【讨论】:

  • 我虽然你必须输入"{$num}st"。我猜你每天都会学到一些新东西:)
  • @RobinCastlin,如果你输入{$num}st,你会得到{1}st作为输出,而不是1st
【解决方案2】:

使用串联的. 字符:

echo $num . 'st';

【讨论】:

  • 我问这个问题的原因是因为连接是一个相当昂贵的操作符,代码变得难以阅读,但还是谢谢
  • 这根本不是真的,串联实际上稍微快一点:stackoverflow.com/questions/13620/…(尽管您不应该根据速度差异做出决定,它可以忽略不计)
  • 您是否实际测量过使用连接和其他选项(例如 Quentin 发布的选项)之间的成本差异...除非您正在谈论连接大量长度为数千字节的字符串,几乎是不可估量的
  • 嗯,它的速度成本不高,但内存使用成本高。连接存储每个字符串,然后连接它们。这导致连接使用双倍内存
  • @nist - 内存开销是暂时的,直到它完成连接操作,这就是为什么它只对极长的字符串很重要,即使这样,执行连接所需的几个纳秒本身。
猜你喜欢
  • 2020-08-21
  • 2014-02-07
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 2016-07-17
相关资源
最近更新 更多