(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SplFixedArray クラスは配列の主要な機能を提供します。 SplFixedArray と通常の PHP の配列との主な違いは、 SplFixedArray は手動でリサイズしなければならないことと、 整数値で指定した範囲内の添字しか使用できないところです。 これにより、標準の array よりメモリ消費が少なくて済みます。
バージョン | 説明 |
---|---|
8.1.0 | SplFixedArray は、 JsonSerializable を実装するようになりました。 |
8.0.0 | SplFixedArray は、 IteratorAggregate を実装するようになりました。 これより前のバージョンでは、 Iterator を実装していました。 |
例1 SplFixedArray の使用例
<?php
// 固定長の配列を初期化します
$array = new SplFixedArray(5);
$array[1] = 2;
$array[4] = "foo";
var_dump($array[0]); // NULL
var_dump($array[1]); // int(2)
var_dump($array["4"]); // string(3) "foo"
// 配列のサイズを 10 に拡大します
$array->setSize(10);
$array[9] = "asdf";
// 配列のサイズを 2 に縮めます
$array->setSize(2);
// 以下は RuntimeException: Index invalid or out of range となります
try {
var_dump($array["non-numeric"]);
} catch(RuntimeException $re) {
echo "RuntimeException: ".$re->getMessage()."\n";
}
try {
var_dump($array[-1]);
} catch(RuntimeException $re) {
echo "RuntimeException: ".$re->getMessage()."\n";
}
try {
var_dump($array[5]);
} catch(RuntimeException $re) {
echo "RuntimeException: ".$re->getMessage()."\n";
}
?>
上の例の出力は以下となります。
NULL int(2) string(3) "foo" RuntimeException: Index invalid or out of range RuntimeException: Index invalid or out of range RuntimeException: Index invalid or out of range