2011-03-22 30 views
0

你好,請幫我出關於從我是從函數返回三個變量likw這返回三個可變的功能,並檢查他們

return $data 
return $success 
return $error 

功能 從

$check =$user->search($result); 

調用返回的變量現在根據收到的變量來設置一些條件。我面臨的問題是,我如何獲得我已經收到的可用的名稱。我想通過名稱不是值 接受它像

if($check == $data) 
+0

的可能重複[PHP:是否有可能從一個函數返回多個值(HTTP://計算器。 com/questions/3579892/php-is-it-it-it-it-it-possible-returns-multiple-values-from-a-function)和[其他幾個](http://stackoverflow.com/search?q=multiple+返回值+ + [PHP])。 – Gordon 2011-03-22 15:45:47

+0

使用Python,你可以返回一個元組,並使用理智的語法分配它的元素;) – ThiefMaster 2011-03-22 15:47:16

回答

3
function myfunc() { 
    ... do stuff ... 
    $values = array($data, $success, $error); 
    return($values); 
} 

$data = myfunc(); 
echo "Data is ", $data[0]; 

return只能返回一個單一的東西,它「放棄」的功能,所以你不能有連續2個或更多的回報 - 只有第一個將永遠執行。所以,解決方法是返回一個容器,其中包含您需要的所有值。在這種情況下,我使用了一個數組,但是返回可以「返回」任何東西 - 如果你願意的話,你可以讓一個對象返回。

3

你不能從一個函數返回一個以上的變量。我建議製作一個數組,然後返回。

return array('data' => $data, 'success' => $success, 'error' => $error); 
3

你不能以這種方式返回三個變量。 $success$error將永遠不會返回,因爲函數在第一個return $data之後結束。

如果你想返回三個值,你可以做這樣的:

return array($data, $success, $error); 

,並調用它是這樣的:

list($data, $success, $error) = $user->search($result); 
-1

我不太確定自己使用的情況下,但從您期望的變量看起來,我會建議將它們變成參考參數:

function search($data, &$success, &$error) { 

這是wha很多原生的PHP函數都可以做,而且還有一個適用於像你這樣的狀態變量的習慣用法。缺點是,你總是用額外的參數來調用該方法,那麼:

$check = $user->search($result, $success, $error); 

不能解決您..how can i get the name of the vairable which i have received(你試過簡單的方式不可解的),但我不能肯定什麼你的意思是或打算在那裏。

2

我不認爲原始海報試圖返回3個變量,而是有多個控制路徑,並根據某些條件返回不同的東西。

public function search($r) { 
    ... 
    return array('data' => $data); 
    ... 
    return array('success' => $success); 
    ... 
    return array('error' => $error); 
} 

$check = $user->search($result); 
switch(key($check)) { 
    case 'data': 
     // handle data 
    break; 

    case 'success': 
     // handle success 
    break; 

    case 'error': 
     // handle error 
    break; 
} 
+1

+1:我認爲這實際上是OP想要的。 – 2011-03-22 15:54:28

1

乾淨的解決方案是在成功時返回數據集(例如數組),並在發生錯誤時拋出異常。使用這種方法將消除變量$ success的需要。

當你調用來實現這樣的方法,你可以去這樣的:

try 
{ 
    $data = $someObject->someFunction($some_parameter); 
} 
catch(Exception $e) 
{ 
    // error handling code path 
} 
相關問題