2011-12-28 210 views
3

我想用一個函數返回2個不同的值。這是我的功能:2返回一個函數

function example1 ($a) { 
    return $result1; 
    return $result2; 
} 

function example2 ($edit, $account, $value) { 
    $config ($edit); 
} 

喜歡我得到我$config -variable $result1。但是我需要做什麼才能在我的example1-函數中得到兩個返回的值?

回答

4

這可能是做這最徹底的方法:

function example1($a) 
{ 
    return array($result1, $result2) 
} 

// get both values 
list($config1, $config2) = example1($a); 

這將使$config = $result1$config2 = $result2

+0

謝謝。在所有的答案中,這個是最乾淨的!謝謝 – Michiel 2011-12-28 12:54:31

1

Php不允許來自同一個函數的多個返回值(例如python),所以如果你想這樣做,你必須返回一個數組,對象或者重做你的邏輯。

或者重做你的邏輯來返回一個對象數組。

1

使用關聯數組或stdClass作爲返回變量。

function example1 ($a) { 
    return array("result_1" => $result1 , "result_2" => $result2); 
} 

並在需要的地方檢索值。但是,這是不行的

$answer = example1($a); 
$firstResult = $answer["result_1"]; 
$secondResult = $answer["result_2"]; 

注:

$firstResult = example1($a)["result_1"] ; 

,並會給出一個語法錯誤,因爲PHP中的缺點。因此,首先分配數組,然後檢索值。

1

你只需把你的成果轉化爲數組,然後返回所述陣列

function example1 ($a) { 
    $array = array(); 
    $array[0] = $result1; 
    $array[1] = $result2; 
    return $array; 
    } 
3

在一個功能時無法返回2個變量,你應該返回數組來代替:

function example1 ($a) { 
    $result[0] = 'something'; 
    $result[1] = 'something else'; 
    return $result; 
} 
0

您可以使用傳遞參考參數:

function example(&$result1, &$result2) { 
    $result1 = 'a'; 
    $result2 = 123; 
} 

example($a, $b); 
echo "$a, $b"; 
1

幾種解決方案:

  1. 使用數組:return array($result1, $result2); 然後可以使用list($config1, $config2) = $returned;獲得分配給兩個變量兩個值。

  2. 使用參考。

    function example_1($a, &$result2) { 
        $result2 = 'whatever'; 
        return $result1; 
    } 
    
    // $config1 will contain $result1 
    // $config2 will contain $result2 ('whatever' in this case) 
    $config1 = example_1($a, $config_2); 
    
0

它不可能使一個函數或方法不止一個回報。但是,你必須與幾個值,而不是返回數組的可能性:

function example1 ($a) { 
    return array('top' => $result1, 'left' => $result2); 
} 

現在您可以訪問兩個值:

$result = example1($a); 
echo $result['top'] . ' x ' . $result['left']; 
0

返回數組:

function example1 ($a) { 
    return array($result1, $result2); 
} 

並使用列表檢索它:

list($a, $b) = example1('something');