2012-11-22 16 views
15

Ho una funzione e ho bisogno di restituire due array.Funzione PHP restituisce due array

So che una funzione può restituire solo una variabile .. c'è un modo per restituire i miei due array?

Se li concatenano, come posso separarli in modo pulito quando si esce dalla funzione?

+0

effettivamente la stessa della risposta accettata, solo con molte più spiegazioni: http://stackoverflow.com/questions/3451906/multiple-returns-from-function#answer-3579950 – caramba

risposta

50

Non c'è bisogno di concatenare: basta tornare di due matrici, come questo:

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

... allora si sarà in grado di assegnare questi array alle variabili locali con list, in questo modo:

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

E se si lavora con PHP 5.4, è possibile utilizzare la sintassi scorciatoia serie anche qui:

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

grazie mille! – lleoun

+1

+1 per ottenere una bella risposta :) –

+0

Eccellente, grazie! –

2

Penso che la risposta di raina77ow risponda adeguatamente alla tua domanda. Un'altra opzione da considerare è l'uso dei parametri di scrittura.

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

    return array(4, 5, 6); 
} 

Poi, chiamare:

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

Questo non sarà utile se si sempre necessario restituire due matrici, ma può essere utilizzata per restituire sempre un array e restituire l'altra solo in alcuni casi.

Problemi correlati