我一直想知道如何做到这一点,我有一个功能。
$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没有值。有什么帮助吗?
答案 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');
?>