Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】array_fill()関数の使い方

array_fill関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

array_fill関数は、指定された開始インデックスから、指定された数の要素を持ち、すべての要素が同じ値で埋められた新しい配列を作成して返す関数です。この関数は、特定の数の要素を持つ配列を初期化し、すべてに同じ値を設定したい場合に非常に役立ちます。

この関数には三つの引数を渡します。最初の引数である$start_indexは、作成される配列の最初の要素のインデックス(番号)を整数で指定します。例えば、0を指定すると通常の配列のように0からインデックスが始まります。負の値を指定することも可能です。二つ目の引数である$countは、作成する配列の要素の数を整数で指定します。この数は1以上である必要があります。三つ目の引数である$valueは、作成される配列のすべての要素に設定される値を指定します。この値は数値、文字列、真偽値など、どのような型の値でも構いません。

array_fill関数は、これらの引数に基づいて新しい配列を作成し、その配列を戻り値として返します。例えば、インデックス0から始まり、5つの要素を持ち、すべての要素が「PHP」という文字列で埋められた配列を作成したい場合にこの関数を利用することができます。これにより、配列をループなどで一つずつ初期化する手間を省き、簡潔にコードを記述することが可能になります。

構文(syntax)

1<?php
2$filledArray = array_fill(0, 5, 'exampleValue');

引数(parameters)

int $start_index, int $count, mixed $value

  • int $start_index: 配列の開始インデックスを指定する整数
  • int $count: 生成する配列要素の数を指定する整数
  • mixed $value: 配列に格納する値を指定する混合型

戻り値(return)

array

指定されたキーと値で指定された要素数を持つ配列を生成します。

サンプルコード

PHP array_fill_keysで配列を生成する

1<?php
2
3/**
4 * array_fill_keys関数の使用例を示します。
5 *
6 * この関数は、指定された配列の値を新しい配列のキーとして使用し、
7 * すべてのキーに同じ値を割り当てた新しい配列を生成します。
8 *
9 * @param array $keys  新しい配列のキーとして使用する値のリスト。
10 *                     これらの値は文字列または整数である必要があります。
11 * @param mixed $value 新しい配列のすべての要素に割り当てる値。
12 * @return array キーが $keys の要素で、値が $value で埋められた新しい配列。
13 */
14function illustrateArrayFillKeys(array $keys, mixed $value): array
15{
16    // array_fill_keys関数を呼び出し、指定されたキーと値で配列を生成します。
17    // 例: $keys = ['apple', 'banana'], $value = 'fruit' の場合、
18    // 結果は ['apple' => 'fruit', 'banana' => 'fruit'] となります。
19    return array_fill_keys($keys, $value);
20}
21
22// --- 使用例 ---
23
24// ケース1: 文字列のキーと文字列の値
25$productCategories = ['electronics', 'books', 'clothing'];
26$defaultStatus = 'available';
27$inventoryStatus = illustrateArrayFillKeys($productCategories, $defaultStatus);
28
29echo "--- ケース1: 文字列キーと文字列値 ---\n";
30echo "元のキー配列: ";
31print_r($productCategories);
32echo "共通の値: " . $defaultStatus . "\n";
33echo "生成された配列: ";
34print_r($inventoryStatus);
35/*
36期待される出力:
37Array
38(
39    [electronics] => available
40    [books] => available
41    [clothing] => available
42)
43*/
44
45echo "\n";
46
47// ケース2: 整数と文字列が混在したキーと数値の値
48$userIDs = [101, 'guest_user', 205];
49$defaultScore = 0;
50$initialScores = illustrateArrayFillKeys($userIDs, $defaultScore);
51
52echo "--- ケース2: 混在キーと数値値 ---\n";
53echo "元のキー配列: ";
54print_r($userIDs);
55echo "共通の値: " . $defaultScore . "\n";
56echo "生成された配列: ";
57print_r($initialScores);
58/*
59期待される出力:
60Array
61(
62    [101] => 0
63    [guest_user] => 0
64    [205] => 0
65)
66*/
67
68echo "\n";
69
70// ケース3: キー配列に重複する値がある場合
71// array_fill_keysは重複するキーを自動的に1つにまとめるため、
72// 'apple'が複数あっても結果には1つの'apple'キーのみが含まれます。
73$fruitNames = ['apple', 'banana', 'apple', 'orange'];
74$isSweet = true;
75$fruitSweetness = illustrateArrayFillKeys($fruitNames, $isSweet);
76
77echo "--- ケース3: 重複するキーがある場合 ---\n";
78echo "元のキー配列: ";
79print_r($fruitNames);
80echo "共通の値: " . ($isSweet ? 'true' : 'false') . "\n";
81echo "生成された配列: ";
82print_r($fruitSweetness);
83/*
84期待される出力:
85Array
86(
87    [apple] => 1
88    [banana] => 1
89    [orange] => 1
90)
91*/
92
93?>

PHPのarray_fill_keys関数は、指定された配列の要素を新しい配列のキーとして使用し、それらのすべてのキーに同じ単一の値を割り当てることで、新しい配列を生成します。

この関数は二つの引数を取ります。最初の引数$keysには、新しい配列のキーとして利用したい値のリストを配列として渡します。この配列の要素は文字列か整数である必要があります。二番目の引数$valueには、生成される配列のすべてのキーに割り当てたい単一の値を指定します。

array_fill_keys関数は、これらの引数をもとに、新しい配列を返します。この戻り値の配列では、$keysで指定された要素がキーとなり、それぞれのキーに対応する値は$valueで指定した値で統一されます。例えば、商品カテゴリのリストをキーとして、すべて「利用可能」というステータスを設定する初期化処理などに便利です。また、$keys配列に重複する値が含まれている場合でも、array_fill_keysは自動的にキーを一つにまとめ、そのキーには指定された$valueが割り当てられます。この関数を使うことで、特定のパターンで初期化された連想配列を簡単に作成できます。

array_fill_keys関数は、第一引数の配列要素を新しい配列の「キー」として利用し、第二引数の値をそのすべてのキーに割り当てる際に使用します。キーとして指定する値は文字列または整数である必要があります。それ以外の型の値が指定された場合、PHPはキーとして扱えるように変換を試みますが、意図しない結果になる可能性があるため注意が必要です。また、第一引数の配列に同じ値が複数含まれる場合、重複するキーは自動的に上書きされ、結果の配列には一意なキーのみが含まれます。この関数は常に新しい配列を返すため、元の配列が変更される心配はありません。

PHP array_fillで指定範囲を値で埋める

1<?php
2
3/**
4 * array_fill 関数の基本的な使い方を示すサンプルコード。
5 * 指定された開始インデックスから、特定の数だけ同じ値で配列を埋めます。
6 */
7function demonstrateArrayFill(): void
8{
9    echo "--- array_fill の使用例 ---" . PHP_EOL;
10
11    // 例1: インデックス0から開始し、5つの要素を文字列 'Apple' で埋める
12    // array_fill(開始インデックス, 要素数, 埋める値)
13    $array1 = array_fill(0, 5, 'Apple');
14    echo "例1: インデックス0から開始し、5つの要素を 'Apple' で埋めた配列:\n";
15    print_r($array1);
16    /* 出力例:
17    Array
18    (
19        [0] => Apple
20        [1] => Apple
21        [2] => Apple
22        [3] => Apple
23        [4] => Apple
24    )
25    */
26
27    echo PHP_EOL;
28
29    // 例2: インデックス3から開始し、3つの要素を数値 123 で埋める
30    $array2 = array_fill(3, 3, 123);
31    echo "例2: インデックス3から開始し、3つの要素を 123 で埋めた配列:\n";
32    print_r($array2);
33    /* 出力例:
34    Array
35    (
36        [3] => 123
37        [4] => 123
38        [5] => 123
39    )
40    */
41
42    echo PHP_EOL;
43
44    // 例3: マイナスの開始インデックスと、ブール値で配列を埋める
45    // マイナスのインデックスはそのままキーとして使用されます。
46    $array3 = array_fill(-2, 4, true);
47    echo "例3: インデックス-2から開始し、4つの要素を true で埋めた配列:\n";
48    print_r($array3);
49    /* 出力例:
50    Array
51    (
52        [-2] => 1
53        [-1] => 1
54        [0] => 1
55        [1] => 1
56    )
57    */
58}
59
60// 関数を実行して結果を表示
61demonstrateArrayFill();
62
63?>

PHP 8.4のarray_fill関数は、新しい配列を効率的に作成するための機能です。この関数は、指定された開始インデックスから、特定の数だけ同じ値で配列の要素を埋める際に使用します。

引数は3つあります。$start_indexは、配列のキーが始まるインデックスを整数で指定します。この値は負の数でも可能で、その場合も指定された負のインデックスからキーが順に増加します。$countは、作成する配列に含める要素の総数を整数で指定します。そして$valueは、配列のすべての要素に設定される値で、文字列、数値、ブール値など、どのようなデータ型でも指定できます。

この関数は、引数で定義された条件に従って生成された新しい配列を返します。例えば、インデックス0から開始して5つの要素を「Apple」で埋めると、キー0から4までの要素がすべて「Apple」となる配列が生成されます。また、インデックス3から3つの要素を数値の123で埋めると、キー3から5までの要素が123となる配列が得られます。負のインデックスである-2から4つの要素をtrueで埋める例では、キー-2から1までの要素がtrue(PHPでは数値の1と表示されることがあります)となる配列が作成されます。このようにarray_fill関数は、配列を特定の同じ値で初期化したい場合に大変便利です。

array_fill関数は、指定した開始インデックスから指定個数の要素を同じ値で埋めた新しい配列を作成します。引数$countには、必ず1以上の正の整数を指定してください。0や負の数を指定すると、PHP 8.0以降ではValueErrorが発生します。また、$start_indexに負の値を指定すると、インデックスも負の値から連番で生成されますので、キーの扱いに注意が必要です。この関数は常に新しい配列を返します。既存の配列に要素を追加したい場合は別の関数を検討してください。大量の要素を生成する際は、メモリの使用量にも配慮が必要です。

PHP: array_fillで指定範囲を値で埋める

1<?php
2
3/**
4 * array_fill関数の基本的な使い方を示すサンプルコード。
5 * 指定した開始インデックスから、指定した数の要素を特定の値で埋めた配列を作成します。
6 * キーワード「php array fill range」に関連し、特定の範囲(インデックス)を埋める方法を示します。
7 */
8
9// 例1: インデックス0から始まる配列を生成
10// 0番目のインデックスから5個の要素を文字列 'apple' で埋めます。
11// array_fill(開始インデックス, 要素数, 埋める値)
12$fruits = array_fill(0, 5, 'apple');
13echo "--- 例1: インデックス0から始まる配列 ---\n";
14print_r($fruits);
15/*
16期待される出力:
17Array
18(
19    [0] => apple
20    [1] => apple
21    [2] => apple
22    [3] => apple
23    [4] => apple
24)
25*/
26
27echo "\n";
28
29// 例2: 指定した開始インデックスから配列を生成
30// 3番目のインデックスから3個の要素を数値 100 で埋めます。
31// 配列のインデックスは3, 4, 5 となります。
32$numbers = array_fill(3, 3, 100);
33echo "--- 例2: インデックス3から始まる配列 ---\n";
34print_r($numbers);
35/*
36期待される出力:
37Array
38(
39    [3] => 100
40    [4] => 100
41    [5] => 100
42)
43*/
44
45echo "\n";
46
47// 例3: 異なるデータ型(ブーリアン)で埋める
48// 1番目のインデックスから4個の要素を真偽値 true で埋めます。
49$statuses = array_fill(1, 4, true);
50echo "--- 例3: ブーリアン値で埋めた配列 (インデックス1から) ---\n";
51print_r($statuses);
52/*
53期待される出力:
54Array
55(
56    [1] => 1
57    [2] => 1
58    [3] => 1
59    [4] => 1
60)
61(PHPではtrueは数値の1として表示されることがあります)
62*/
63
64?>

PHPのarray_fill関数は、指定されたインデックスから、指定された数の要素を特定の値で埋めた新しい配列を効率的に作成するための関数です。この関数は、配列の初期化や特定の範囲を同じ値で埋めたい場合に特に役立ちます。

引数についてご説明します。最初の引数$start_indexは、新しく生成される配列の最初の要素が持つインデックス(キー)を指定します。2番目の引数$countは、その開始インデックスからいくつの要素を生成するか、つまり配列の要素数を指定します。最後の引数$valueは、生成される全ての要素に設定される値です。この値は数値、文字列、真偽値など、PHPが扱うあらゆるデータ型を使用できます。戻り値としては、これらの条件に基づいて生成された新しい配列が返されます。

サンプルコードでは、array_fillの様々な使い方を示しています。例1では、インデックス0から5個の要素を文字列「apple」で埋めた配列を生成します。例2では、インデックス3から3個の要素を数値100で埋めることで、配列が指定した開始インデックスから作成される挙動を確認できます。例3では、真偽値trueで配列の要素を埋める方法を紹介しており、PHPではtrueが数値の1として表示される場合があることも示しています。このように、array_fill関数は「php array fill range」というキーワードが示す通り、配列の特定の範囲を効率的に初期化する際に非常に便利なツールです。

array_fill関数は、指定した開始インデックスから、指定された数の要素を特定の値で埋めた新しい配列を作成します。第一引数の開始インデックスは、配列の最初のキーとして直接指定され、そこから連番でキーが自動生成されます。例えば、3を指定するとキーは3から始まります。第二引数の要素数は生成される要素の合計数であり、この値が0以下の場合には空の配列が返されますのでご注意ください。第三引数には、数値、文字列、真偽値など、あらゆる型の値を指定できます。この関数は、特定の範囲のインデックスに同じ値を効率良く設定したい場合に特に役立ちます。

PHP array_fillでカスタム連想配列を作成する

1<?php
2
3/**
4 * array_fill 関数の使用例
5 *
6 * array_fill は、指定された開始インデックス ($start_index) から、
7 * 指定された数 ($count) の要素を持つ配列を作成し、
8 * すべての要素に同じ値 ($value) を設定します。
9 *
10 * PHPにおける「連想配列」は通常、文字列をキーとする配列を指しますが、
11 * array_fill は常に数値キーを持つ配列を生成します。
12 * しかし、開始インデックスを0以外に指定することで、
13 * 0から始まるデフォルトの数値キーとは異なる、カスタムの数値キーを持つ配列を作成できます。
14 * これは、配列のキーが必ずしも0から始まるわけではないという概念を理解するのに役立ちます。
15 */
16function demonstrateArrayFillWithCustomNumericKeys(): void
17{
18    // 例: インデックス100から始まる5つの要素を持つ配列を作成します。
19    // 生成されるキーは 100, 101, 102, 103, 104 となります。
20    // すべての要素の値は 'placeholder_value' です。
21    $customIndexedArray = array_fill(100, 5, 'placeholder_value');
22
23    // 生成された配列の内容を出力して確認します。
24    print_r($customIndexedArray);
25}
26
27// 上記の関数を実行して、array_fill の動作を確認します。
28demonstrateArrayFillWithCustomNumericKeys();
29
30/*
31期待される出力:
32Array
33(
34    [100] => placeholder_value
35    [101] => placeholder_value
36    [102] => placeholder_value
37    [103] => placeholder_value
38    [104] => placeholder_value
39)
40*/

PHPのarray_fill関数は、指定された数の要素を持つ新しい配列を作成し、すべての要素に同じ値を設定する際に使用します。

この関数は、引数として3つの情報を受け取ります。1つ目の$start_indexは、新しく作成する配列の最初のキー(インデックス)を数値で指定します。2つ目の$countは、作成する要素の総数を数値で指定します。そして3つ目の$valueは、配列のすべての要素に格納したい値を指定します。これらの情報に基づいて生成された配列が戻り値として返されます。

PHPにおいて「連想配列」は文字列をキーとする配列を指しますが、array_fill関数が生成するのは常に数値キーを持つ配列です。しかし、$start_indexを0以外の値に設定することで、通常の0から始まる配列とは異なる、任意の数値から始まるキーを持つ配列を作成できます。

サンプルコードでは、array_fill(100, 5, 'placeholder_value')と呼び出しています。これは「インデックス100から始まり、要素が5つあり、すべての値が'placeholder_value'である配列を作成する」という意味です。これにより、キーが100、101、102、103、104となる配列が生成され、各キーに対応する値として「placeholder_value」が設定されていることを確認できます。これは、配列のキーが必ずしも0から始まらないという概念を理解するのに役立ちます。

array_fill関数は、指定した開始インデックスから数値キーを持つ配列を作成し、全ての要素に同じ値を設定します。PHPにおける「連想配列」は通常文字列をキーとする配列を指しますが、この関数は常に数値キーの配列を生成しますので、混同しないようご注意ください。文字列キーの連想配列が必要な場合は、別の関数や手法をご検討ください。また、生成する要素数を示す第2引数$countには、必ず1以上の正の整数を指定してください。0以下の値を指定するとValueErrorが発生し、プログラムが停止する原因となりますので、特に注意が必要です。

関連コンテンツ

関連プログラミング言語