【问题标题】:How to have constants evaluated in strings? [duplicate]如何在字符串中评估常量? [复制]
【发布时间】:2011-07-02 07:51:44
【问题描述】:

可能重复:
Include constant in string without concatenating

我怎样才能得到一个像变量一样在字符串中求值的常量?

$foo = "like";
define('BAR', 'fish');

// None of these give me 'I like to eat fish on Tuesday.'
echo "I $foo to eat BAR on Tuesday.";
echo "I $foo to eat {BAR} on Tuesday.";
echo 'I $foo to eat BAR on Tuesday.';

// This works but is undesirable
echo 'I $foo to eat '.BAR.' on Tuesday.';

【问题讨论】:

  • 不确定是否可行,但您可以定义一个变量并用它来替换它?
  • 不受欢迎,但有必要。振作起来。 (不同的安德鲁!)
  • 这在 SO 上已经讨论过好几次了,只是措辞有点不同(这就是为什么你在询问时没有看到它的原因)。

标签: php


【解决方案1】:

当然没有办法。也不需要。

【讨论】:

  • -1 你的答案没有解释,只是判断。
  • @Andrew 您的问题也没有任何解释。只是“不受欢迎”的判断;)
  • 我很惊讶拥有 19k 代表的人会发布如此无用的答案...实际上在查看您的个人资料后,您的领先两步的方法似乎导致了很多居高临下的答案.
  • @Juan 你碰巧读到了这个问题吗? :)
  • 我做到了。 “如何在字符串中评估常量”。我投反对票的原因是,我实际上发现能够执行“从 {MY_TABLE_CONSTANT} WHERE {OTHER_COLUMN} = :value 中选择 {MY_COLUMN_CONSTANT}”而不是到处对常量名称进行编码是很有用的。现在我要么必须进行字符串连接,这使得它难以阅读,要么我必须将常量复制到局部变量......
【解决方案2】:

据我所知,这是不可能的。在 SO 上查看此答案,如果您也不希望串联,它包含有用的解决方法! Include constant in string without concatenating

【讨论】:

    【解决方案3】:

    我知道这行得通(您可能已经知道)的唯一方法是:

    <?php
    $foo = "like";
    define('BAR', 'fish');
    $constants = get_defined_constants();
    echo "I $foo to eat {$constants['BAR']} on Tuesday.";
    ?>
    

    哪个打印:

    I like to eat fish on Tuesday.
    

    【讨论】:

    • 我知道,但感谢您的安慰。我考虑过这个选项,但它最终降低了代码的可读性。
    • 它不仅会降低代码的可读性,还会阻止 IDE 检测字符串中的无效常量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2011-03-30
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多