[ PHP入門 ] 配列のリターン値を要素ごとに別変数で受け取る ( list )

Pocket

ここでは、PHP において関数のリターン値として返された配列を、要素ごとにそれぞれ別変数で受け取るサンプルスクリプトを掲載しています。

スポンサーリンク


配列のリターン値を要素ごとに別変数で受け取る

PHP の特徴的な構文と言えると思いますが、list を使用することで配列の要素を個々の変数に直接格納することができます。詳細はサンプル内のコメントを参照ください。

/*
 * 色のリストを返す関数
 */
function return_colors()
{
    return array("blue", "green", "red");
}

// リターン値の個数と(一般的に)順序が既知の場合にのみ使用可能
// 配列要素をそれぞれ別変数に格納する
list($b, $g, $r) = return_colors();
echo $b . PHP_EOL;
echo $g . PHP_EOL;
echo $r . PHP_EOL;

// リターン値を配列として受け取る。リターン値の個数に関係なく受けとれる
$colors = return_colors();
foreach ($colors as $color) {
    echo $color . PHP_EOL;
}

/*
 * 下記のようなことは推奨しないが、動作はする
 */
// リターン値より少ない場合は、先頭から順に変数に格納される
list($b, $g) = return_colors();

// リターン値より受け取る変数が多い場合、動作はするが「PHP Notice:  Undefined offset: 3」が出力される
list($b, $g, $r, $unset) = return_colors();

PHP の特徴的な構文であるとは思いますが、複数言語を使用する人には個人的にはお勧めしない構文です。配列は配列のままリターン値として受け取り、受け取った後に任意の操作を行ったほうが良いと思います。

上記のようなコードを率先して記述する人がいましたが、長老に全て修正を命じられておりました。このときばかりは長老に賛成しました。

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>