2012-11-22 24 views
15

Tôi có một hàm và tôi cần nó để trả về hai mảng.Chức năng PHP trả về hai mảng

Tôi biết một hàm chỉ có thể trả về một biến .. có cách nào trả về hai mảng của tôi không?

Nếu tôi nối chúng, làm thế nào tôi có thể tách chúng một cách sạch sẽ khi không hoạt động?

+0

thực sự giống như câu trả lời được chấp nhận, chỉ với nhiều giải thích thêm: http://stackoverflow.com/questions/3451906/multiple-returns-from-function#answer-3579950 – caramba

Trả lời

50

Không cần phải nối: chỉ trả lại mảng của hai mảng, như thế này:

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

... sau đó bạn sẽ có thể chỉ định các mảng đến các biến địa phương với list, như thế này:

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

Và nếu bạn làm việc với PHP 5.4, bạn có thể sử dụng cú pháp tắt mảng ở đây cũng như:

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

cảm ơn rất nhiều! – lleoun

+1

+1 để nhận được câu trả lời hay :) –

+0

Tuyệt vời, cảm ơn bạn! –

2

Tôi nghĩ câu trả lời của Raina77ow đáp ứng đầy đủ câu hỏi của bạn. Một tùy chọn khác để xem xét là sử dụng các tham số ghi.

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

    return array(4, 5, 6); 
} 

Sau đó, để gọi:

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

này sẽ không hữu ích nếu bạn luôn cần phải trả lại hai mảng, nhưng nó có thể được sử dụng để luôn trả lại một mảng và trả lại khác chỉ trong một số trường hợp nhất định.