PHPのarray_pad関数の使い方!配列を指定サイズまで埋める

PHPのarray_pad関数は、指定した配列を特定のサイズまで埋めるために使用されます。

配列の要素数が足りない場合に、不足分を同じ値で埋めて配列の長さを揃えたいときに非常に便利です。
特に、固定長のデータ構造を扱う場合や、特定のフォーマットに合わせて配列の長さを調整する場合に役立ちます。

この記事では、array_pad関数の基本的な使い方、埋める方向(左/右)、負の数を指定した場合の挙動、そして使用する際の注意点について解説します。

array_pad関数の基本的な構文

array_pad 関数の基本的な構文は以下の通りです。

array_pad(array $array, int $size, mixed $value): array
  • $array: パディング(埋め込み)を行いたい元の配列です。
  • $size: 結果として得られる配列の新しいサイズ(要素数)を指定する整数です。
    • $size が正の数の場合、配列は右側(末尾)から埋められます。
    • $size が負の数の場合、配列は左側(先頭)から埋められます。
    • $size の絶対値が元の配列の要素数よりも小さい場合、配列は変更されずにそのまま返されます。
  • $value: 配列を埋めるために使用する値です。任意の型(数値、文字列、ブール値、NULL など)を指定できます。

array_pad関数の戻り値

配列を埋めた後の新しい配列が返されます。

追加された要素には、0から始まる連番インデックスが割り当てられます。
例えば、元の連想配列 ['a' => 1, 'b' => 2] を array_pad すると、追加部分は [0] => 'x' などになります。

array_pad関数を使ってみる

実際にarray_pad関数を使って、動作を確認してみます。

例1:配列の右側を埋める(正数を指定)

サイズに正数を指定して、配列を埋めてみます。

<?php
$colors = ['red', 'green'];

// 配列を5要素にする。不足分は 'blue' で埋める。
$paddedColors = array_pad($colors, 5, 'blue');

print_r($paddedColors);
// 出力:
// Array
// (
//     [0] => red
//     [1] => green
//     [2] => blue
//     [3] => blue
//     [4] => blue
// )
?>

$colors配列を作成して、配列にたいしてarray_pad関数を使っています。
「5」を指定しているので、全体で要素数が5つになるように埋められます。

結果を確認すると、足りない要素が文字列のblueで埋められました。

例2:配列のサイズが既に指定要素数以上

配列のサイズが既に指定した要素以上の場合です。
その場合は埋められず、元の配列がそのまま返されます。

<?php
$numbers = [10, 20, 30, 40, 50];

// size が現在の要素数 (5) 以下なので、変更なし
$paddedNumbers = array_pad($numbers, 3, 0);

print_r($paddedNumbers);
// 出力:
// Array
// (
//     [0] => 10
//     [1] => 20
//     [2] => 30
//     [3] => 40
//     [4] => 50
// )
?>

数字配列の$numbersに対して、array_padで要素を埋めようとしていますが、全体のサイズが「3」になっています。
既に$numbers配列は要素数が5なので、埋められることはなく、そのままの配列が返ってきます。

負のサイズを指定する

新しいサイズ($size)に負の数を指定すると、パディングは配列の左側(先頭)から行われます。

例3:配列の左側を埋める(負数を指定)

サイズに負数を指定して、配列の先頭から埋めます。

<?php
$data = ['item1', 'item2'];

// 配列を5要素にする。不足分は 'empty' で左側から埋める。
$paddedData = array_pad($data, -5, 'empty');

print_r($paddedData);
// 出力:
// Array
// (
//     [0] => empty
//     [1] => empty
//     [2] => empty
//     [3] => item1
//     [4] => item2
// )
?>

2つの文字列が入った$data配列があります。
その次の処理で、array_pad関数を使って、配列を埋めています。

「-5」を指定しているので、配列の先頭から埋められます。
結果を確認すると、全体の要素が5つで、先頭から指定した「empty」で埋められていることが確認できました。

連想配列を埋める

連想配列にたいしてarray_pad関数を使います。

<?php

$fruits = ['apple' => 'red', 'banana' => 'yellow'];
$paddedFruits = array_pad($fruits, 5, 'fruit');

print_r($paddedFruits);

// 出力:
// Array
// (
//     [apple] => red
//     [banana] => yellow
//     [0] => fruit
//     [1] => fruit
//     [2] => fruit
// )
?>

$fruitsが連想配列になっています。
要素を埋めると、元の要素のキーは変わらず、新しく埋められた箇所は数字のインデックスになっていることが確認できます。

array_pad関数を使う際の注意点

  • 元の配列の変更なし: array_pad は新しい配列を返します。元の配列は変更されません。
  • キーの扱い:
    • 数値インデックス配列の場合、元の要素のインデックスは保持されます。追加された要素には、新しい数値インデックスが割り当てられます。
    • 連想配列の場合、元のキーと値のペアは保持されます。追加された要素には、数値インデックス(0, 1, 2…)が割り当てられます。
  • 新しいサイズの絶対値: サイズ($size)の値は、埋めるかどうかを決定する際に、常にその絶対値で評価されます。
  • メモリ使用量: 非常に大きな配列を極端なサイズまでパディングしようとすると、メモリを大量に消費する可能性があるため注意が必要です。

おわりに

PHPのarray_pad関数は、配列を特定のサイズまで効率的に埋めるための便利なツールです。

配列の要素数を揃えたい場合や、固定長のデータ構造を扱う場合に特に役立ちます。
サイズ($size)の符号によって埋める方向(左側または右側)を制御できるため、柔軟な配列操作が可能です。

元の配列は変更されず、新しい配列が返される点や、キーの扱い、メモリ使用量に注意して、array_pad関数を効果的に活用しましょう。

PHP

コメント