22

我想在 PHP 中使用一个常量,但我也想像变量一样将它放在双引号内。这是可能吗?

define("TESTER", "World!");
echo "Hello, TESTER";

显然输出“Hello,TESTER”,但我真正想要的是:

$tester = "World!";
echo "Hello, $tester";

输出“你好,世界!”。

4

7 回答 7

18

抱歉,这不是 PHP 中常量的工作方式。您可以将变量放在双引号和 heredocs 中,但不能放在常量中。

于 2009-10-14T00:22:11.020 回答
5

我建议您使用串联,因为:

  1. 当您在双引号字符串中使用变量时,您的可见性不好;
  2. 当您使用双引号字符串时,php 处理速度会很慢;
  3. 您不要在字符串中使用常量,因为没有任何分隔符,php 知道什么是常量。
于 2009-10-14T00:33:12.297 回答
4

串联是要走的路。

除非你想要那种做作、讨厌、低效、邪恶的猴子方式:

echo preg_replace("/TESTER/",TESTER,$original_content);
于 2009-10-14T01:18:34.563 回答
3

为任何可能觉得有用的人发帖,这样的事情会起作用:

<?php
// example code
define('AAA', '30V');
$constant = 'constant';
echo "{$constant('AAA')}"; //Echoes 30V

相信我,我也不相信这样的事情是可能的,但它是!在 tehplayground.com 上尝试一下,自己看看。

归功于想到它的人,以及发现它的我的同事(我认为他是在 stackoveflow 中做到的)。

于 2021-01-18T11:11:16.170 回答
1

没办法,除非你自己写字符串解析函数

于 2009-10-14T00:18:14.163 回答
1

我发现当一个常量的点连接是一个问题时,使用 sprintf 来获取我的字符串通常是我最终想要的方式。

于 2009-10-14T00:26:44.953 回答
0

或者,做

"this is " . MY_CONSTANT

或者

"this is " . constant("MY_CONSTANT");
于 2019-09-02T20:04:06.867 回答