函数中的PHP变量变量

时间:2011-07-18 07:20:07

标签: php variables

我一直想知道如何做到这一点,我有一个功能。

  $sky = (a range of number 1 to 10);


function condi($nnn){ 
  if($$nnn <= 1){
  echo 'Fails';
  }
  elseif($$nnn <= 3){
  echo 'Respectable';
  }
  elseif($$nnn <= 5){
  echo 'Decent';
  }
  elseif($$nnn <= 7){
  echo 'Great';
  }
  elseif($$nnn <= 9){
  echo 'Legendary';
  }
  elseif($$nnn = 10){
  echo 'Ultimate';
  }
 }

  condi('sky');

但无论$ sky的值是多少,输出都会失败。

所以我决定检查$$ nnn的值是什么,然后我意识到$$ nnn没有值。有什么帮助吗?

5 个答案:

答案 0 :(得分:2)

$sky位于全球范围内:

function condi($nnn){ 
  global $$nnn;
  if($$nnn <= 1){
    ...

答案 1 :(得分:2)

$$nnn替换为$GLOBALS[$nnn]

无论变量名$nnn包含什么 - 它都不是函数的本地名称所以你需要通过$GLOBALS数组来访问它(这比global $$nnn;之类的东西更清晰然后使用$$nnn)。

答案 2 :(得分:0)

为了让函数看到$sky(我认为是目标),它必须在函数的范围内可见。默认情况下,全局不可见。

您需要在功能中说global $$nnn;,或者将$$nnn更改为$GLOBALS[$nnn]。请注意,这只适用于全局变量 - 您将无法传递其他函数的本地名称并让此函数看到它们。

答案 3 :(得分:-1)

你的“nnn”变量中有两个$$符号。删除一个。

答案 4 :(得分:-1)

你应该使用

<?php
$sky = rand(1, 5);
function condi($nnn){
    global $sky;
    switch ($$nnn) {
        case $$nnn < 1:
            echo "Fails";
            break;
        case $$nnn < 3:
            echo "Respectable";
            break;
        case $$nnn <= 5:
            echo "Decent";
            break;
        // .................... //
    }
}
condi('sky');
?>