一般变量的“准备好的陈述”?

时间:2014-06-06 04:28:19

标签: php variables

我想这是一些基本的事情,但说实话我从来没有这么做过,现在我有点卡住了。是否可以定义一个字符串,该字符串也包含一个变量但只在声明字符串后定义该变量?这是基本的纲要示例。

$string = 'What a ' . $var . ' day!';

$var = 'nice';

echo $string; // This should print "What a nice day!"

注意只有在声明$ string之后才定义$ var,而不是之前。我正在考虑某种变量变量,通过引用传递,封装成某些东西或使用OOP,但到目前为止还没有运气。也许这是一些基本的语法,但对我来说这将是第一次。这不需要严格关于变量。我想这与PDO中的预处理语句类似。但我需要在更广泛的范围内使用这种“准备好的陈述”。任何提示?

修改

愚蠢我,对不起。我忘了提到重要的事情(没有它我的情况不是那么清楚)。问题在于,我想要注入准备好的字符串的变量必须来自一般范围。另一个例子:

    function Test($var) {

    $string = What a ' . $var . ' day!';
    return $string;

}
$var = 'nice';
echo Test($var);

以上并没有解决这个问题,因为我需要了解$ var并在执行函数时手动调用它。在我的情况下,我希望我准备好的语句只在我实际调用那个预准备语句时才寻找它定义的变量。如果这些变量存在于当前范围中,请使用它们。并且只有在他们不这样做时才会抛出错误。

3 个答案:

答案 0 :(得分:1)

首先定义您的$var,然后使用字符串try

添加
$var = 'nice';
$string = 'What a ' . $var . ' day!';
echo $string; // This should print "What a nice day!"

或者如果你想在字符串之后保留$ var,请尝试str_replace()

$string = 'What a $var day!';
$var = 'nice';
echo str_replace('$var', $var, $string);

您在$string中缺少引号,在函数调用中缺少分号尝试

function Test($var) {
    $string = 'What a ' . $var . ' day!';
    return $string;
}
$var = 'nice';
echo Test($var);

答案 1 :(得分:0)

存储在变量中的函数可能是?

$dayis = function ($adj) {
  return 'What a ' . $adj . ' day!';
  }

$var = 'nice';

echo $dayis($var);

然而,这种情况非常罕见,可能不需要。请更好地说明您的问题,因为这似乎是XY problem

答案 2 :(得分:0)

您可以使用匿名函数

$variable = 'bad';

$text = function() use($variable){
  return 'What a ' . $variable . ' day!';
}

echo $text();