list

(PHP 3, PHP 4, PHP 5)

list --  配列と同様の形式で、複数の変数への代入を行う

説明

void list ( mixed varname, mixed ... )

array() と同様に、 この関数は実際には関数ではなく言語の構成要素です。 list() は、 単一の操作で一連の変数に値を代入するために使われます。

注意: list() は数値添字の配列のみを生成します。 添字は 0 から始まります。

例 1. list() の例

<?php

$info
= array('コーヒー', '茶色', 'カフェイン');

// すべての変数の取得
list($drink, $color, $power) = $info;
echo
"$drink の色は $color で、$power が含まれています。\n";

// 一部の変数の取得
list($drink, , $power) = $info;
echo
"$drink には $power が含まれています。\n";

// 三番目のみの取得
list( , , $power) = $info;
echo
"$power 欲しい!\n";

// list() は文字列では動作しません
list($bar) = "abcde";
var_dump($bar); // NULL
?>

例 2. list() の使用法の例

<table>
<tr>
  <th>社員氏名</th>
  <th>給与</th>
</tr>

<?php

$result
= mysql_query("SELECT id, name, salary FROM employees", $conn);
while (list(
$id, $name, $salary) = mysql_fetch_row($result)) {
    echo
" <tr>\n" .
          
"  <td><a href=\"info.php?id=$id\">$name</a></td>\n" .
          
"  <td>$salary</td>\n" .
          
" </tr>\n";
}

?>

</table>

警告

list()は、最も右のパラメータから値を代入します。 プレーンな変数を使用している場合には、このことを気にする必要はありません。 しかし、添字配列を使用している場合には、配列の添字の順番が list() に書いたものと同じく左から右となることを通常は期待しますが、 そうはなりません。この配列の添字は逆の順番となります。

例 3. 配列の添字を使用した list() の例

<?php

$info
= array('coffee', 'brown', 'caffeine');

list(
$a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>

次のような出力になります(list() の文法に書かれた 順番と、要素の順番の違いに注意):

array(3) {
  [2]=>
  string(8) "caffeine"
  [1]=>
  string(5) "brown"
  [0]=>
  string(6) "coffee"
}

each()array() および extract() も参照ください。