2012-08-30 136 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; 
}; 
}