2012-08-30 108 views
2

我试图做一个函数,它会做什么,下面的语句做内....检查变量是否被设置或不“全局”的功能

<?php 
if(isset($var)){ 
    echo $var; 
} 
else { 
    echo ""; 
} 
?> 

我已经这样做了这么远....

<?php 
function echo_ifset($dyn_var){ 
    $var = $dyn_var; 
    if(isset($$var)){ 
     global $$var; 
     echo $$var; 
    } 
} 

但它不显示当我运行你需要呼应的返回值什么..

echo_ifset('message'); 
// while message is a defined variable. 
+0

可能是这里的问题是,当我检查它是否是本地检查功能中设置与否。那么如何在一个函数中检查一个变量是否设置为“全局”? –

+0

我提到你的代码plz错误查看我的答案 – Hkachhia

回答

4

如果你有一个参考的工作,你会不会有警告的任何问题(或errrors,我的PHP是一个有点生疏!)如果该变量没有定义:

function echo_ifset(&$var) { 
    if (isset($var)) { 
     echo $var; 
    }; 
} 

注意的$var声明之前&,这是参考运算符。

然后,你可以调用它使用:

echo_ifset($message); 

这种方法也是伟大的,如果你想定义设置默认值的方法:

<?php 
function defaultValue(&$var, $default) { 
    if (!isset($var)) { 
     return $default; 
    } 

    return $var; 
} 
?> 

一些额外的阅读材料被找到在:http://www.php.net/manual/en/language.references.pass.php

+0

我会给一个支票.... –

+0

工作就像一个魅力。谢谢 –

+0

我的荣幸:)与PHP中的每一个功能一样,它有它应该和不应该使用的地方。 – Darkzaelus

0

您功能:

function ifset($dyn_var) { 
    if (isset($dyn_var)) { 
    return $dyn_var; 
    } 
    else { 
    return ""; 
    } 
} 

,然后只用:

echo ifset($var); 
+0

这将打破时,我会调用一个变量,因为PHP不调用一个函数,直到给定的变量被定义... –

+0

我想这取决于在你的PHP设置上。尽管我收到通知,但这对我很有用。但是Darkzaelus的答案有效。 –

0

你已经传递消息作为一个字符串,所以不显示它。

您已通过,如echo_ifset($message)。如果消息变量已经定义。

+0

if语句结尾的分号是可选的。它的行为像一个空的陈述,因此不会抛出任何错误。 – Darkzaelus

+0

@Darkzaelus谢谢我不知道它,我已经更新了我的答案。 – Hkachhia

+0

这只是一个错字.. –

0

删除一个$ if语句:

function echo_ifset($dyn_var){ 
$var = $dyn_var; 
if(isset($var)){ 
    global $$var; 
    echo $$var; 
}; 
}