【PHP8.x】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)

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

引数(parameters)

array &$array, mixed ...$values

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

戻り値(return)

int

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

サンプルコード

PHP array_push 連想配列に追加する

<?php

declare(strict_types=1);

/**
 * array_push() を連想配列に使用する例
 *
 * この関数は、array_push() が連想配列に対してどのように動作するかを示します。
 * array_push() は、キーを指定せずに値を配列の末尾に追加するため、
 * 連想配列に使用した場合でも、自動的に数値の添字(0, 1, 2...)が割り当てられます。
 */
function demonstrateArrayPushWithAssociativeArray(): void
{
    // 'name' と 'age' という文字列キーを持つ連想配列を準備します。
    $userProfile = [
        'name' => 'Taro Yamada',
        'age' => 30,
    ];

    echo '--- 実行前の配列 ---' . PHP_EOL;
    print_r($userProfile);
    echo PHP_EOL;

    // array_push() を使って2つの値 ('Tokyo', 'Developer') を追加します。
    // 追加された値には、文字列キーではなく数値キーが自動で割り振られます。
    $newElementCount = array_push($userProfile, 'Tokyo', 'Developer');

    echo '--- array_push() 実行後の配列 ---' . PHP_EOL;
    print_r($userProfile);
    echo PHP_EOL;

    // array_push() の戻り値は、値を追加した後の配列の要素数 (int) です。
    // 元の2要素 + 追加した2要素 = 4要素
    echo "新しい要素数: " . $newElementCount . PHP_EOL;
}

// 関数を実行して結果を確認します。
demonstrateArrayPushWithAssociativeArray();

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エンジニア