函数检查 isset 的 php 范围问题

发布于 2024-12-05 09:12:18 字数 441 浏览 2 评论 0原文

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

这有效...

$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 引用与调用者上下文相同的范围?这可能吗?

提前致谢....

I need a function that will take a string as an argument, then check to see if a variable named the same thing as that string is set.

This works...

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

This doesn't, because within test(), $$property2 is the wrong scope.

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

How can I fix the function so $$property2 refers to the same scope as the caller's context? Is that possible?

Thanks in advance....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

少女七分熟 2024-12-12 09:12:18

试试这个:

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

function test($property2) {
    global $property2;

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

try this:

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

function test($property2) {
    global $property2;

    if(isset($property2)) {
        echo $property2;
    }
}
醉南桥 2024-12-12 09:12:18
<?php
function test($s) 
{ 
  return isset($GLOBALS[$s]);
}
<?php
function test($s) 
{ 
  return isset($GLOBALS[$s]);
}
浊酒尽余欢 2024-12-12 09:12:18

好吧,我想我已经为我的目的弄清楚了(如果有人感兴趣......)

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

echo $huh;

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

ok, i think i figured it out for my purposes (if anyone's interested...)

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

echo $huh;

function test(&$property2) {
   if(isset($property2)) {
       return $property2;
   } else {
       return 'not set!';
   }
}
die;
爱她像谁 2024-12-12 09:12:18

这可以通过eval()来完成:

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

This can be done with eval():

   $foo = 'foosuccess';
    $property = 'foo';
    if(eval('isset(
.$property.')'){
    echo $property;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文