php listを使って配列から変数を生成する

  • 作成日 2020.12.14
  • php
php listを使って配列から変数を生成する

phpで、listを使用して、配列から変数を生成するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

list使い方

listを使用すれば、配列から変数を生成することが可能です。

list(変数名,...) = 配列;

以下は、配列から変数を生成するサンプルコードとなります。

<?php

$arr = ["aaa", "bbb", "ccc"];

list($a, $b, $c) = $arr;

echo $a . PHP_EOL; // aaa
echo $b . PHP_EOL; // bbb
echo $c . PHP_EOL; // ccc

配列の要素数と変数は一致してなくてもエラーにはなりません。

<?php

$arr = ["aaa", "bbb", "ccc"];

list($a, $b) = $arr;

echo $a . PHP_EOL; // aaa
echo $b . PHP_EOL; // bbb

ただし、変数の方が要素数より多ければ、Warningが発生します。

<?php

$arr = ["aaa", "bbb", "ccc"];

list($a, $b, $c, $d) = $arr;

echo $a . PHP_EOL; // aaa
echo $b . PHP_EOL; // bbb
echo $c . PHP_EOL; // ccc
echo $d . PHP_EOL; // 

実行結果

PHP Warning:  Undefined array key 3 in /usr/share/nginx/html/sample.php on line 5
PHP Stack trace:
PHP   1. {main}() /usr/share/nginx/html/sample.php:0
aaa
bbb
ccc

また、listはphp7.1では以下のように記述することも可能です。

<?php

$arr = ["aaa", "bbb", "ccc"];

[$a, $b, $c] = $arr;

echo $a . PHP_EOL; // aaa
echo $b . PHP_EOL; // bbb
echo $c . PHP_EOL; // ccc

また、インデックス番号をキーにした連想配列からも変数を生成することが可能です。

<?php

$arr = [0 => "a", 1 => "b", 2 => "c"];

list($a, $b, $c) = $arr;

echo $a . PHP_EOL; // aaa
echo $b . PHP_EOL; // bbb
echo $c . PHP_EOL; // ccc

listを使用すれば、配列から、特定の位置の配列の値を変更することも可能です。

<?php

$arr1 = [1, 2, 3];
$arr2 = ["aaa", "bbb", "ccc"];

list($arr1[0], $arr1[2]) = $arr2;

print_r($arr1);

実行結果

Array
(
    [0] => aaa
    [1] => 2
    [2] => bbb
)