【问题标题】:What does $$ (dollar dollar or double dollar) mean in PHP?PHP 中的 $$(美元或双美元)是什么意思?
【发布时间】:2019-05-03 13:04:56
【问题描述】:

示例是函数内的变量声明:

global $$link;

$$ 是什么意思?

【问题讨论】:

标签: php


【解决方案1】:

$$variable 等语法称为Variable Variable


例如,如果您考虑这部分代码:

$real_variable = 'test';
$name = 'real_variable';
echo $$name;

你会得到以下输出:

test


这里:

  • $real_variable 包含测试
  • $name 包含变量的名称:'real_variable'
  • $$name 的意思是“名称包含在 $name 中的变量
    • $real_variable
    • 并且具有值'test'



在@Jhonny 发表评论后编辑:

在做$$$ 吗?
嗯,知道的最好方法是尝试 ;-)

那么,让我们试试这部分代码:

$real_variable = 'test';
$name = 'real_variable';
$name_of_name = 'name';

echo $name_of_name . '<br />';
echo $$name_of_name . '<br />';
echo $$$name_of_name . '<br />';

这是我得到的输出:

name
real_variable
test

所以,我想说,是的,你可以这样做$$$ ;-)

【讨论】:

  • 虽然我同意它很有用,但大多数情况下还是最好使用数组。
  • 所以这和 ${$value} 是一样的吗?
  • @Chaim : 是的 ;;除了在某些情况下,{} 是必需的(手册中有一个示例)
【解决方案2】:

内层$将a变量解析为字符串,外层$通过该字符串解析变量。

所以,考虑这个例子

$inner = "foo";
$outer = "inner";

变量:

$$outer

等于字符串“foo”

【讨论】:

  • 即使被接受的anwser要广泛得多(包括测试用例)。这个解释让我更清楚
【解决方案3】:

这是variable's variable

<?php
$a = 'hello';
$$a = 'world'; // now makes $hello a variable that holds 'world'
echo "$a ${$a}"; // "hello world"
echo "$a $hello"; // "hello world"
?>

【讨论】:

    【解决方案4】:

    它创建一个动态变量名。例如

    $link = 'foo';
    $$link = 'bar';    // -> $foo = 'bar'
    echo $foo;
    // prints 'bar'
    

    (也称为variable variable

    【讨论】:

      【解决方案5】:

      我不想在别人之后重复,但使用$$ 存在风险:)

      $a  = '1';
      $$a =  2; // $1 = 2 :)
      

      所以把它和头一起用。 :)

      【讨论】:

        【解决方案6】:

        它将一个变量的内容评估为另一个变量的名称。基本上它会为您提供名称存储在$link 中的变量。

        【讨论】:

          【解决方案7】:

          这对我有用(用方括号括起来):

          $aInputsAlias = [
                  'convocatoria'   => 'even_id',
                  'plan'           => 'acev_id',
                  'gasto_elegible' => 'nivel1',
                  'rubro'          => 'nivel2',
                  'grupo'          => 'nivel3',
              ];
          
              /* Manejo de los filtros */
          
              foreach(array_keys($aInputsAlias) as $field)
              {
                  $key = $aInputsAlias[$field];
          
                  ${$aInputsAlias[$field]} = $this->request->query($field) ? $this->request->query($field) : NULL;
              }
          

          【讨论】:

            猜你喜欢
            • 2020-01-20
            • 1970-01-01
            • 2010-11-05
            • 2019-11-14
            • 1970-01-01
            • 2018-03-25
            • 2011-08-09
            • 2017-07-22
            • 2016-03-20
            相关资源
            最近更新 更多