2012-11-22 13 views
15

Mam funkcję i potrzebuję jej do zwrócenia dwóch tablic.Funkcja PHP zwracająca dwie tablice

Wiem, że funkcja może zwrócić tylko jedną zmienną. Czy istnieje sposób na zwrócenie moich dwóch tablic?

Jeśli je łączę, w jaki sposób mogę je oddzielić, gdy są poza funkcją?

+0

w rzeczywistości taki sam, jak zaakceptowana odpowiedź, tylko z wieloma dodatkowymi wyjaśnieniami: http://stackoverflow.com/questions/3451906/multiple-returns-from-afunction#answer-3579950 – caramba

Odpowiedz

50

Nie trzeba złączyć: wystarczy zwrócić tablicę z dwóch tablic, jak poniżej:

function foo() { 
    return array($firstArray, $secondArray); 
} 

... wtedy będzie można przypisać tych tablic do zmiennych lokalnych z list, tak:

list($firstArray, $secondArray) = foo(); 

a jeśli pracujesz z PHP 5.4, można użyć składni skrótu tablicy również tutaj:

function foo54() { 
    return [$firstArray, $secondArray]; 
} 
+0

wielkie dzięki! – lleoun

+1

+1, aby uzyskać dobrą odpowiedź :) –

+0

Doskonale, dziękuję! –

2

Myślę, że odpowiedź raina77ow odpowiednio odpowiada na twoje pytanie. Inną opcją do rozważenia jest użycie parametrów zapisu.

function foobar(array &$arr1 = null) 
{ 
    if (null !== $arr1) { 
     $arr1 = array(1, 2, 3); 
    } 

    return array(4, 5, 6); 
} 

Następnie zadzwonić:

$arr1 = array(); 
$arr2 = foobar($arr1); 

To nie będzie przydatna, jeśli zawsze trzeba zwracać dwie tablice, ale może być stosowany zawsze powrócić jednej tablicy i powrót drugi tylko w niektórych przypadkach.