Code:
$result = array_fill_keys(配列, 値);
keyを指定して連想配列を生成します。
値には、文字列や数値などの値、配列、NULL、functionなど、様々な値を指定することができます。
色々な値を渡した場合の使い方を紹介していきます。
値には、文字列や数値などの値、配列、NULL、functionなど、様々な値を指定することができます。
色々な値を渡した場合の使い方を紹介していきます。
使い方
配列と文字列を渡す
Code:
$array = [1, 2, 3];
$value = 'A';
$result = array_fill_keys($array, $value);
Result:
array(3) {
[1]=>
string(1) "A"
[2]=>
string(1) "A"
[3]=>
string(1) "A"
}
第一引数に渡された配列の値がkeyとなり連想配列が作られます。
値には第二引数に指定した値が代入されます。
値には第二引数に指定した値が代入されます。
配列と配列を渡す
Code:
$array = [1, 2, 3];
$value = ['A', 'B', 'C'];
$result = array_fill_keys($array, $value);
Result:
array(3) {
[1]=>
array(3) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[2]=>
string(1) "C"
}
[2]=>
array(3) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[2]=>
string(1) "C"
}
[3]=>
array(3) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[2]=>
string(1) "C"
}
}
値に配列を指定することも可能です。
連想配列と数値を渡す
Code:
$array = [
'A' => 'a',
'B' => 'b',
'C' => 'c',
];
$value = 1;
$result = array_fill_keys($array, $value);
Result:
array(3) {
["a"]=>
int(1)
["b"]=>
int(1)
["c"]=>
int(1)
}
keyとなる配列に連想配列を渡した場合でも正常に動作します。
連想配列の場合も配列と同様に値がkeyとなり、連想配列が生成されます。
連想配列の場合も配列と同様に値がkeyとなり、連想配列が生成されます。
重複する値のある配列と文字列を渡す
Code:
$array = [1, 2, 3, 2, 1];
$value = 'A';
$result = array_fill_keys($array, $value);
Result:
array(3) {
[1]=>
string(1) "A"
[2]=>
string(1) "A"
[3]=>
string(1) "A"
}
keyとなる配列に重複した値があると、重複したkeyは省略されます。
渡した要素数と、返される要素数に差異が出てしまうので注意が必要です。
渡した要素数と、返される要素数に差異が出てしまうので注意が必要です。
空の配列と文字列を渡す
Code:
$array = [];
$value = 'A';
$result = array_fill_keys($array, $value);
Result:
array(0) {
}
keyとなる値がないので、値に何を渡していたとしても連想配列は生成されず、空の配列が返ります。
結果が数字のキーとなるような配列と文字列を渡す
Code:
$array = [2, 1, 0];
$value = 'A';
$result = array_fill_keys($array, $value);
Result:
array(3) {
[2]=>
string(1) "A"
[1]=>
string(1) "A"
[0]=>
string(1) "A"
}
渡した配列としての順序は保持され、勝手にソートされるようなことはありません。
配列以外の値を指定する
Code:
$array = 1;
$value = 1;
$result = array_fill_keys($array, $value);
Result:
NULL
第一引数に配列以外の値を指定すると、NULLが返ります。
エラーにならないので、注意が必要です。
エラーにならないので、注意が必要です。
配列と無名関数を渡す
Code:
$array = [1, 2, 3];
$value = function($args) {
return $args * 2;
};
$result = array_fill_keys($array, $value);
var_dump($result[1](123));
Result:
int(246)
使う機会が思いつきませんが、無名関数を渡すことも可能です。
渡された関数を実行することも出来ます。
使う機会が思いつきませんが。
渡された関数を実行することも出来ます。
使う機会が思いつきませんが。
他の書き方
配列を使って、連想配列を作るだけの関数なので、色々と代用方法があります。
思い出せない時などは、調べるより早いのでforeachを使ってしまったりします。
思い出せない時などは、調べるより早いのでforeachを使ってしまったりします。
Code:
$array = [1, 2, 3];
$value = 'A';
$result = array_fill_keys($array, $value);
$result = [];
// array_fill_keysと同義
foreach ($array as $key) {
$result[$key] = $value;
}
まとめ
今回は「array_fill_keys」の解説となりました。
抜けがあってはならない配列データ(日付など)の初期化などに使えたりします。(カレンダーの日付配列を作成した後に、誕生日データを追加したい時とか)
あまり使う機会の多い関数ではありませんが、コード量が減り可読性が上がるので是非取り入れてみてください!
抜けがあってはならない配列データ(日付など)の初期化などに使えたりします。(カレンダーの日付配列を作成した後に、誕生日データを追加したい時とか)
あまり使う機会の多い関数ではありませんが、コード量が減り可読性が上がるので是非取り入れてみてください!