【问题标题】:dollar escape? pay me $$owed美元逃跑?付给我$$欠款
【发布时间】:2012-07-27 15:16:45
【问题描述】:

我遇到了一个代码块,该代码块在参数周围使用双引号执行打印。该参数包含一个似乎被美元符号转义的变量。这就是在php中的双引号内调用变量的方式吗?

print("$$owed");

这是源代码的完整块:

<html>

 <head>

 <title>Loans</title>

 </head>


 <body>

 <?php

 $interest_rate = .14;

 function YouOweMe($cost, $interest_rate) {

 $weekly_payment = ($cost*$interest_rate);

 print "You better pay me $$weekly_payment every week, or else!";

 }

<font color="#000000">YouOweMe($cost, $interest_rate);

 ?>

 </body>

 </html>

我不得不去掉这些数字。好烦。

无论如何,... 对我来说没有意义的是 $$owed 应该这样做,什么?从包含字符串'owed'的单独变量创建一个新变量?这在任何情况下似乎都不实用。 $$owed不是只是为了在金额前加一个美元符号吗?

【问题讨论】:

标签: php escaping


【解决方案1】:

这是一个理解变量变量的例子:

<?php
   $var = "test";
   $test = "hey !";
   echo "$$var";   //$test
   echo "${$var}"; //hey !
   echo '$$var';   //$$var
?>

根据 cmets 编辑。

【讨论】:

  • 不,在我的控制台中会打印出$test
  • 你需要说echo "${$var}";
  • 哦,对,它只适用于${$var}。对不起,我记性不好!
  • echo "$$test"; 甚至echo "$${$var}";
【解决方案2】:

在 PHP 中,变量在使用双引号定义的字符串中时会使用 $ 进行转义。这不适用于单引号。

【讨论】:

  • 我想我对他当时问的内容感到困惑。就像他想要在 php 中使用 $ 转义变量的构象一样?
  • 他很好奇为什么会有双重的$
  • 哦!那里有两个 $,因为其中一个是实际的 '$' 字符,另一个是转义变量
  • 抱歉,我不在支持 php 的设备上。 $ 在单引号内有什么作用?
  • 没什么,它只是自己打印。 echo "$owed" 将打印owed 的值,其中echo '$owed' 将打印字符串文字'$owed'。
【解决方案3】:
$string = "world"; 

echo "Hello ${string}"; 
#### outputs "Hello World"

这就是您将变量放入字符串的方式(您需要双引号)。

你所拥有的是可变变量。您可以使用包含foo 的字符串来调用变量$foo

$string = 'foo';
$foo = 'hello world';
echo "I say, ${$string}"; 

将输出“你好世界。

【讨论】:

    【解决方案4】:

    在双引号内使用变量有几种方法,一些常用的方法是

    1. print("$owed") 将打印$owed 的值

    2. print("$$owed") 被称为“变量变量”(如前所述)

       $owed = "test";
       $test = 16;
       print("$$owed");
      

      将打印出“$test”。

    3. 这个的另一种用法是print("${$owed}"),它将$test的值作为变量名。

    我强烈建议您使用单引号并连接所需的变量,因为这样可以节省评估变量的时间,例如:

    $owed = 42;
    print('The value is: ' . $owed);
    

    lg,

    弗洛

    【讨论】:

    • 这不是双引号中的变量变量。你试过你的例子吗?它打印$test,而不是16
    • 我的答案有正确的语法。需要括号,例如:print("${$owed}");
    • 如果你能验证你的答案,我可以接受它,因为对我实际应该做什么有一点建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2022-06-13
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多