【问题标题】:Replace variable by another variable in PHP用PHP中的另一个变量替换变量
【发布时间】:2019-09-27 11:12:31
【问题描述】:

这是我的情况,假设我有两个变量:

$a = "Peter";
$b = "tall";

然后,我可以将其组合起来

$c = " $a is very $b ";

这给了我字符串:“彼得很高”

但是,如果我有另一个变量 $e 传递给我的函数,并且字符串是“ $a is very $b ” 然后,我打印出 $e,它只是告诉我“$a 非常 $b”;

我期望的是“彼得很高”,因为 $e 等于 $c。

这是整个逻辑流程:

$e = " $a is very $b ";
getMsg($e);
function getMsg($e){
  $a = "Peter";
  $b = "tall";
  $c = " $a is very $b ";
  echo $c //Peter is very tall
  echo $e //$a is very $b
}

我怎样才能实现这个功能?

【问题讨论】:

  • 你试过的功能在哪里?
  • 打开错误报告,你会看到类似Notice: Undefined variable: a in ... Notice: Undefined variable: b in ... 的东西。 $a$b 在您的 $e 行中未定义。而echo $e 可能会输出“非常”。 (另外,您的echos 缺少;php.net/manual/en/language.variables.scope.php
  • 你不应该对字符串使用双引号,总是单引号。如果您尝试在没有双引号的情况下自己重写代码并连接字符串,我想您会很容易发现问题所在

标签: php variables syntax


【解决方案1】:

您可以使用sprintf sprintf documentation%s 符号是字符串标记,它们被替换为格式字符串(sprintf 的第一个参数)。

$e = "%s is very %s";
getMsg($e);
function getMsg($e){
  $a = "Peter";
  $b = "tall";
  echo sprintf($e, $a, $b);
}

getMsg() 函数的耦合度较低的版本:

function getMsg($msg,$name,$is){
  echo sprintf($msg, $name, $is);
}  
getMsg("%s is very %s", "Peter", "tall");

【讨论】:

  • 你不应该对字符串使用双引号,总是单引号。这就是首先导致 OP 混乱的原因
  • 并非总是如此。例如$a='hello'; echo '$a'
  • 是的,重点是:这让您考虑是否需要引号。你不能到处使用它们。在那个例子中,你绝对不需要引号,简单或双引号!
【解决方案2】:

请尝试此代码。我希望这是你想要的。

<?php
// Your code here!
 $a = "Peter";
  $b = "tall";
$e = $a."is very".$b;
getMsg($e,$a,$b);
function getMsg($e,$a,$b)
{
 $c = $a."is very".$b;
  echo $c;
 echo $e;
}
?>

【讨论】:

  • 你需要检查变量的范围,你还需要检查你的函数定义以及你是如何调用你的函数的。
【解决方案3】:

试试这个。它应该可以正常工作。您需要在函数外定义$a$b

function getString($a,$b,$e){

  $c = " $a is very $b ";
  echo $c;
  echo '<br/>'.$e;
}
$a = "Peter";
$b = "tall";
$e = " $a is very $b ";
$response = getString($a,$b,$e);

输出:

Peter is very tall 
Peter is very tall

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 2022-11-17
    • 2012-10-16
    • 2014-03-13
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多