web-dev-qa-db-ja.com

PHP 2つの配列を返す関数

関数があり、2つの配列を返すために必要です。

関数が返すことができる変数は1つだけだと知っていますが、2つの配列を返す方法はありますか?

それらを連結する場合、関数の外でそれらをきれいに分離するにはどうすればよいですか?

16
lleoun

連結する必要はありません。次のように、2つの配列の配列を返すだけです。

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

...次に、これらの配列を次のように list を使用してローカル変数に割り当てることができます。

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

また、PHP 5.4を使用している場合は、ここでも配列ショートカット構文を使用できます。

function foo54() {
    return [$firstArray, $secondArray];
}
58
raina77ow

Raina77owの答えはあなたの質問に適切に答えると思います。考慮すべきもう1つのオプションは、書き込みパラメーターを使用することです。

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

    return array(4, 5, 6);
}

次に、呼び出すには:

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

alwaysが2つの配列を返す必要がある場合、これは役に立ちませんが、常に1つの配列を返し、特定の場合にのみもう1つの配列を返すために使用できます。

2
Ja͢ck