用于函数检查的php范围问题

时间:2011-09-16 00:12:34

标签: php scope isset

我需要一个将字符串作为参数的函数,然后检查是否设置了与该字符串名称相同的变量。

这有效......

$foo = 'foosuccess';
$property = 'foo';
if(isset($$property)){
echo $$property;
}

这不,因为在test()中,$$ property2是错误的范围。

$huh = 'huhsuccess';
$huh = test("huh");
function test($property2){
    if(isset($$property2)){
        echo $$property2;
}
}

如何修复函数,以便$$ property2引用与调用者上下文相同的范围?这可能吗?

提前致谢....

4 个答案:

答案 0 :(得分:0)

试试这个:

$huh = 'huhsuccess';
test("huh");

function test($property2) {
    global $$property2;

    if(isset($$property2)) {
        echo $$property2;
    }
}

答案 1 :(得分:0)

<?php
function test($s) 
{ 
  return isset($GLOBALS[$s]);
}

答案 2 :(得分:0)

好吧,我想我想出了我的目的(如果有人感兴趣的话......)

//uncomment to get success
//$huh = 'huhsuccess';
$huh = test($huh);

echo $huh;

function test(&$property2) {
   if(isset($property2)) {
       return $property2;
   } else {
       return 'not set!';
   }
}
die;

答案 3 :(得分:-1)

可以使用eval()

完成此操作
   $foo = 'foosuccess';
    $property = 'foo';
    if(eval('isset($'.$property.')'){
    echo $$property;
    }