【PHP8.x】array_push関数の使い方

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

作成日: 更新日:

基本的な使い方

array_push関数は、一つまたは複数の要素を配列の末尾に追加する関数です。PHPの組み込み関数であり、配列を直接変更します。元の配列が変更されるため、新しい配列を作成するのではなく、既存の配列に要素が追加される点に注意が必要です。

この関数は、少なくとも一つの引数として対象となる配列を受け取り、その後に可変長の引数として追加する要素を受け取ります。複数の要素を一度に追加することが可能です。array_push関数は、要素が追加された後の配列の新しい要素数を返します。もし最初の引数が配列でない場合、array_push関数は警告を発生させます。

具体的な使用例として、 $my_array = [1, 2, 3]; という配列があった場合、array_push($my_array, 4, 5); を実行すると、$my_array[1, 2, 3, 4, 5] に変更されます。そして、array_push関数は新しい要素数である5を返します。

array_push関数は、$array[] = $value;という構文を使用するよりも、複数の要素を追加する場合には効率が良いとされています。ただし、要素を一つだけ追加する場合は、$array[] = $value;を使用する方が若干高速です。

array_push関数は、配列の操作において頻繁に使用される便利な関数であり、配列への要素追加処理を効率的に行うことができます。

構文(syntax)

1array_push(array &$array, mixed ...$values): int

引数(parameters)

array &$array, mixed ...$values

  • array &$array: 要素を追加する対象となる配列。参照渡しなので、関数の実行後に元の配列が変更されます。
  • mixed ...$values: 配列に追加する1つ以上の値。

戻り値(return)

int

配列の末尾に要素を追加した後の、配列の新しい要素数を返します。

サンプルコード

PHP array_push 使い方:配列に要素を追加する

1<?php
2
3/**
4 * array_push 関数の基本的な使い方を示すサンプルコードです。
5 * array_push は、一つ以上の要素を配列の末尾に追加します。
6 *
7 * @param array $initialArray 初期配列
8 * @return void
9 */
10function demonstrateArrayPush(array $initialArray): void
11{
12    echo "--- array_push 関数の使い方 ---" . PHP_EOL;
13
14    // 元の配列を表示
15    echo "初期配列: ";
16    print_r($initialArray);
17
18    // array_push を使用して要素を一つ追加
19    // 戻り値は配列の新しい要素数です
20    $newCountSingle = array_push($initialArray, 'banana');
21    echo "要素 'banana' を追加後 (新しい要素数: " . $newCountSingle . "): ";
22    print_r($initialArray);
23
24    // array_push を使用して複数の要素を一度に追加
25    $newCountMultiple = array_push($initialArray, 'grape', 'kiwi');
26    echo "要素 'grape', 'kiwi' を追加後 (新しい要素数: " . $newCountMultiple . "): ";
27    print_r($initialArray);
28
29    // PHP 7.4 以降では、短く書ける代わりに配列リテラルを使用することも推奨されます。
30    // 例: $initialArray[] = 'orange'; または $initialArray = [...$initialArray, 'orange'];
31    // しかし、array_push は複数の要素を一度に追加する際に依然として便利です。
32    echo "--- 補足: 短縮構文での要素追加 ---" . PHP_EOL;
33    $initialArray[] = 'orange'; // 単一要素追加の一般的な方法
34    echo "単一要素 'orange' を短縮構文で追加後: ";
35    print_r($initialArray);
36}
37
38// サンプル実行
39$myFruits = ['apple', 'orange'];
40demonstrateArrayPush($myFruits);
41
42?>

PHPのarray_push関数は、指定した配列の末尾に新しい要素を追加するために使用します。この関数はPHP 8で利用でき、システム開発で配列を動的に操作する際によく利用されます。

関数には、第一引数として要素を追加したい配列を渡します。この配列は参照渡しされるため、関数内で直接変更されます。第二引数以降には、配列の末尾に追加したい値をいくつでも指定できます。これにより、単一の要素だけでなく、複数の要素を一度に追加することが可能です。

array_pushを実行すると、要素が追加された後の配列の新しい総要素数が整数値として返されます。サンプルコードでは、まず初期配列に'banana'を一つ追加し、次に'grape''kiwi'を一度に複数追加する例を通じて、配列がどのように変化し、そのたびに要素数がどのように更新されるかを示しています。

PHPでは、単一の要素を配列に追加する際、$array[] = 'value';という簡潔な短縮構文も一般的に使われます。しかし、array_push関数は複数の要素をまとめて効率よく追加したい場合に特に役立ちます。この関数を理解することで、配列を使ったデータ管理がよりスムーズに行えるようになります。

array_push関数は、引数で渡された配列の末尾に要素を追加し、元の配列自体を直接変更します。戻り値は追加後の配列の新しい要素数であり、追加された要素の値ではない点に注意が必要です。複数の要素を一度に追加する際に便利ですが、一つの要素だけを追加する場合は$array[] = 'value';のように短縮構文を使用する方が、より簡潔で高速です。状況に応じて適切な方法を選択してください。

PHP array_push で多次元配列を操作する

1<?php
2
3/**
4 * array_push() を使用した多次元配列の要素操作のデモンストレーション。
5 *
6 * この関数は、PHPの array_push() 関数が多次元配列に対してどのように動作するかを
7 * システムエンジニアを目指す初心者向けに分かりやすく示します。
8 * 既存の内部配列への要素追加と、新しい配列(行)の追加の2つのシナリオを扱います。
9 */
10function demonstrateArrayPushMultiDimensional(): void
11{
12    echo "--- array_push() による多次元配列の操作例 ---\n\n";
13
14    // 1. 初期多次元配列の作成
15    // 各要素がさらに配列である「商品カテゴリと商品リスト」の多次元配列を定義します。
16    // 連想配列としてカテゴリ名をキーに持ち、その値が商品名の配列になっています。
17    $productsByCategory = [
18        'Electronics' => ['Laptop', 'Smartphone'],
19        'Books' => ['Fantasy', 'Science Fiction'],
20    ];
21
22    echo "1. 初期状態の多次元配列:\n";
23    print_r($productsByCategory);
24    echo "\n";
25
26    // 2. 既存の内部配列に新しい要素を追加する
27    // 'Electronics' カテゴリに新しい商品「Tablet」を追加します。
28    // array_push() の最初の引数には、操作したい内部配列 ($productsByCategory['Electronics']) を直接指定します。
29    // 戻り値は、要素追加後の配列の要素数です。
30    $newCountElectronics = array_push($productsByCategory['Electronics'], 'Tablet');
31
32    echo "2. 'Electronics' カテゴリに 'Tablet' を追加後:\n";
33    print_r($productsByCategory);
34    echo "  -> 'Electronics' カテゴリの商品数: " . $newCountElectronics . "\n\n";
35
36    // 3. 多次元配列のトップレベルに新しい配列(新しいカテゴリと商品)を追加する
37    // 'Clothes' という新しいカテゴリと商品リストを多次元配列に追加します。
38    // array_push() の最初の引数には、トップレベルの配列 ($productsByCategory) を指定します。
39    // 2番目の引数には、追加したい新しい配列全体を指定します。
40    // この場合、新しいカテゴリは数値キー (0, 1...) で追加されます。
41    $newCountTotalCategories = array_push($productsByCategory, ['T-Shirt', 'Jeans']);
42
43    echo "3. 新しいカテゴリ(配列)を多次元配列のトップレベルに追加後:\n";
44    print_r($productsByCategory);
45    echo "  -> トップレベルのカテゴリ総数 (要素数): " . $newCountTotalCategories . "\n\n";
46
47    // 注意点:
48    // - array_push() は、元の配列自体を変更します。
49    // - 戻り値は、要素が追加された後の配列の新しい要素総数です。
50    // - 連想配列に array_push() で新しい配列を追加した場合、新しい要素は数値インデックスで追加されます。
51}
52
53// 関数を実行して、デモンストレーションを開始します。
54demonstrateArrayPushMultiDimensional();
55
56?>

PHPのarray_push関数は、指定した配列の末尾に一つまたは複数の要素を追加する際に使用されます。この関数は、最初の引数&$arrayで要素を追加したい配列そのものを指定し、二番目以降の引数...$valuesで追加したい要素を渡します。array_pushは元の配列を直接変更し、要素が追加された後の配列の新しい要素総数を整数(int)として返します。

多次元配列に対してarray_pushを使用する場合、操作したい配列の階層を指定することで、柔軟な要素追加が可能です。例えば、「商品カテゴリと商品リスト」のような多次元配列において、既存のカテゴリ(内部配列)に新しい商品を追加したい場合は、$productsByCategory['Electronics']のように特定の内部配列をarray_pushの引数に指定します。これにより、その内部配列の末尾に新しい商品が追加されます。

また、多次元配列のトップレベルに新しいカテゴリ全体(つまり新しい配列)を追加したい場合は、$productsByCategoryのようにトップレベルの配列をarray_pushの引数に指定し、追加したい新しい配列を要素として渡します。この場合、新しいカテゴリは数値インデックスとしてトップレベル配列の末尾に追加されます。このように、array_pushは多次元配列内のさまざまなレベルでの要素追加に利用できます。

array_pushは、元の配列を直接変更する関数であるため、意図しないデータの上書きに注意が必要です。多次元配列の場合、第一引数に操作したい内部配列(例: $array['key'])を直接指定することで、その内部配列に新しい要素を追加できます。

一方で、多次元配列のトップレベルに新しい配列(行)を追加する際は、連想配列であっても新しい要素は自動的に数値インデックスで格納されます。特定のキー名で新しい配列を追加したい場合は、$array['new_key'] = ['value1', 'value2']; のように直接代入する方法を検討してください。

また、この関数の戻り値は、要素が追加された後の配列の新しい要素総数であり、追加された値そのものではないことに留意しましょう。

PHP array_push 連想配列に追加する

1<?php
2
3declare(strict_types=1);
4
5/**
6 * array_push() を連想配列に使用する例
7 *
8 * この関数は、array_push() が連想配列に対してどのように動作するかを示します。
9 * array_push() は、キーを指定せずに値を配列の末尾に追加するため、
10 * 連想配列に使用した場合でも、自動的に数値の添字(0, 1, 2...)が割り当てられます。
11 */
12function demonstrateArrayPushWithAssociativeArray(): void
13{
14    // 'name' と 'age' という文字列キーを持つ連想配列を準備します。
15    $userProfile = [
16        'name' => 'Taro Yamada',
17        'age' => 30,
18    ];
19
20    echo '--- 実行前の配列 ---' . PHP_EOL;
21    print_r($userProfile);
22    echo PHP_EOL;
23
24    // array_push() を使って2つの値 ('Tokyo', 'Developer') を追加します。
25    // 追加された値には、文字列キーではなく数値キーが自動で割り振られます。
26    $newElementCount = array_push($userProfile, 'Tokyo', 'Developer');
27
28    echo '--- array_push() 実行後の配列 ---' . PHP_EOL;
29    print_r($userProfile);
30    echo PHP_EOL;
31
32    // array_push() の戻り値は、値を追加した後の配列の要素数 (int) です。
33    // 元の2要素 + 追加した2要素 = 4要素
34    echo "新しい要素数: " . $newElementCount . PHP_EOL;
35}
36
37// 関数を実行して結果を確認します。
38demonstrateArrayPushWithAssociativeArray();

array_push()関数は、指定した配列の末尾に1つ以上の値を追加するために使用します。第1引数には、値を加えたい配列を渡します。この引数は参照として扱われるため、関数を実行すると元の配列が直接変更されます。第2引数以降には、追加したい値をカンマ区切りでいくつでも指定できます。

サンプルコードのように、この関数を文字列キーを持つ連想配列に対して使用した場合、追加される値にはキーが指定されません。そのため、PHPによって自動的に0から始まる数値のキーが割り当てられます。具体的には、'name''age'のキーを持つ配列に'Tokyo''Developer'を追加すると、これらの新しい値にはそれぞれ数値キーの01が設定されます。このように、array_push()はキーと値のペアを追加するのではなく、単純に配列の末尾に要素を追加する目的で動作します。

関数の戻り値は、全ての値を追加した後の配列の総要素数を整数(int)で返します。この例では、元の2つの要素に新たに2つの要素が追加されたため、結果として4が返されます。

array_push関数を連想配列に使うと、追加する要素にキーを指定することはできません。サンプルコードのように、追加された値には自動的に0から始まる数値キーが割り振られます。このため、文字列キーを持つ連想配列に、特定のキーで値を追加したい場合はこの関数は不向きです。キーと値のペアを追加するには、$array['新しいキー'] = '値';のように直接代入する方法が適切です。また、この関数は元の配列を直接変更し、戻り値は変更後の配列ではなく新しい要素数(整数)である点にも注意してください。

関連コンテンツ

【PHP8.x】array_push関数の使い方 | いっしー@Webエンジニア