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

【PHP8.x】SplFixedArray::setSize()メソッドの使い方

setSizeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

setSizeメソッドは、PHPのSplFixedArrayオブジェクトのサイズ(要素数)を変更するメソッドです。

SplFixedArrayは、通常のPHP配列とは異なり、あらかじめ固定された数の要素を持つ特殊な配列です。メモリ効率を重視する場合などに利用されますが、プログラムの実行中にその要素数を変更したい場合にこのsetSizeメソッドが役立ちます。

このメソッドは、引数として変更したい新しいサイズを整数で受け取ります。

新しいサイズが現在の要素数よりも大きい場合、配列は拡張されます。追加された新しい要素はすべてNULLで初期化されますが、既存の要素の値はそのまま保持されます。 逆に、新しいサイズが現在の要素数よりも小さい場合、配列は縮小されます。この際、末尾の余分な要素は削除され、削除された要素の値は失われますが、残りの要素の値は保持されます。

新しいサイズとして負の値を指定すると、RuntimeExceptionが発生しますので、常に非負の整数を指定する必要があります。

SplFixedArrayの持つメモリ効率の良い特性を活かしつつ、アプリケーションの要件に応じて配列のサイズを柔軟に調整できるため、システム開発において効率的なデータ管理を実現する上で重要なメソッドです。

構文(syntax)

1public SplFixedArray::setSize(int $size): void

引数(parameters)

int $size

  • int $size: 設定する配列のサイズを表す整数

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

SplFixedArray::setSize で配列サイズを変更する

1<?php
2
3/**
4 * SplFixedArray::setSize メソッドの基本的な使い方を示すサンプルコードです。
5 *
6 * SplFixedArray は、固定サイズの配列を提供するPHPの標準クラスです。
7 * setSize メソッドを使用すると、配列のサイズを後から変更できます。
8 *
9 * - 引数 $size: 新しい配列のサイズ(整数)
10 * - 戻り値: なし (void)
11 *
12 * 注意点:
13 * - $size が現在のサイズより大きい場合、新しい要素は null で初期化されます。
14 * - $size が現在のサイズより小さい場合、超過した要素は切り捨てられます。
15 */
16function demonstrateSplFixedArraySetSize(): void
17{
18    echo "--- SplFixedArray::setSize のデモンストレーション ---\n\n";
19
20    // 1. 初期サイズで SplFixedArray を作成します。
21    // ここでは3つの要素を持つ固定配列を作成します。
22    $array = new SplFixedArray(3);
23    echo "初期配列を作成しました(サイズ: " . $array->getSize() . ")\n";
24
25    // 要素に値を代入します。
26    $array[0] = 'Apple';
27    $array[1] = 'Banana';
28    $array[2] = 'Cherry';
29
30    echo "初期内容: \n";
31    print_r($array);
32    echo "\n";
33
34    // 2. setSize を使用して配列のサイズを拡大する例。
35    // サイズを5に拡大します。新しい要素は null で初期化されます。
36    echo "--- 配列のサイズを5に拡大します --- \n";
37    $newSize = 5;
38    $array->setSize($newSize); // setSize メソッドを呼び出し、サイズを5に設定
39    echo "setSize({$newSize}) 実行後、現在のサイズ: " . $array->getSize() . "\n";
40    echo "拡大後の内容: \n";
41    print_r($array);
42    echo "→ 新しく追加されたインデックス (3と4) は null で初期化されます。\n\n";
43
44    // 拡大された要素に値を代入することも可能です。
45    $array[3] = 'Date';
46    $array[4] = 'Elderberry';
47    echo "拡大後の要素に値を代入後: \n";
48    print_r($array);
49    echo "\n";
50
51    // 3. setSize を使用して配列のサイズを縮小する例。
52    // サイズを2に縮小します。超過した要素は切り捨てられます。
53    echo "--- 配列のサイズを2に縮小します --- \n";
54    $shrinkSize = 2;
55    $array->setSize($shrinkSize); // setSize メソッドを呼び出し、サイズを2に設定
56    echo "setSize({$shrinkSize}) 実行後、現在のサイズ: " . $array->getSize() . "\n";
57    echo "縮小後の内容: \n";
58    print_r($array);
59    echo "→ インデックス2以降の要素 (Date, Elderberry) は切り捨てられました。\n\n";
60}
61
62// デモンストレーション関数を実行します。
63demonstrateSplFixedArraySetSize();
64
65?>

PHPのSplFixedArray::setSizeメソッドは、固定サイズの配列を提供するSplFixedArrayオブジェクトのサイズを動的に変更するために使用されます。SplFixedArrayは、一般的なPHPの配列とは異なり、あらかじめサイズを指定して作成され、そのサイズが固定されている点が特徴ですが、このsetSizeメソッドを利用することで、プログラムの実行中にそのサイズを調整することが可能です。

このメソッドはint $sizeという引数を取り、新しい配列のサイズを整数で指定します。メソッドの呼び出し後、戻り値は特にありません。

setSizeを呼び出した際の挙動には注意が必要です。もし指定した$sizeが現在の配列のサイズよりも大きい場合、新しく追加された要素は自動的にnullで初期化されます。反対に、指定した$sizeが現在のサイズよりも小さい場合、元の配列の末尾から超過した要素は切り捨てられ、そのデータは失われます。

提供されたサンプルコードでは、まず初期サイズのSplFixedArrayを作成し、その内容を表示しています。その後、setSizeを使って配列のサイズを拡大するケースと、次に縮小するケースを具体的に実演しており、新しい要素がnullで埋められる様子や、既存の要素が切り捨てられる挙動が確認できます。このメソッドは、メモリ効率を考慮して固定長配列を扱う際に重要な役割を果たします。

SplFixedArray::setSizeは、固定サイズの配列のサイズを後から変更する際に使用するメソッドです。配列のサイズを拡大すると、新しく追加された要素は自動的にnullで初期化されます。特に注意が必要なのは、サイズを縮小する場合です。現在のサイズより小さい値を指定すると、超過した要素は完全に切り捨てられ、そのデータは失われます。一度失われたデータは元に戻せませんので、データの消失に十分注意して利用してください。このメソッドは配列オブジェクト自体を変更し、新しい配列を返しませんので、戻り値がない点も理解しておくことが重要です。

関連コンテンツ