The SplFixedArray class

Introduction

The SplFixedArray class provides the main functionalities of array. The main difference between a SplFixedArray and a normal PHP array is that the SplFixedArray must be resized manually and allows only integers within the range as indexes. The advantage is that it uses less memory than a standard array.

Class synopsis

SplFixedArray
implements IteratorAggregate ArrayAccess Countable JsonSerializable
/* Methods */
public __construct(int $size = 0)
public int count()
public mixed current()
public static SplFixedArray fromArray(array $array, bool $preserveKeys = true)
public Iterator getIterator()
public int getSize()
public array jsonSerialize()
public int key()
public void next()
public bool offsetExists(int $index)
public mixed offsetGet(int $index)
public void offsetSet(int $index, mixed $value)
public void offsetUnset(int $index)
public void rewind()
public array __serialize()
public bool setSize(int $size)
public array toArray()
public void __unserialize(array $data)
public bool valid()
public void __wakeup()

Changelog

Version Description
8.2.0 The SplFixedArray::__serialize and SplFixedArray::__unserialize magic methods have been added to SplFixedArray.
8.1.0 SplFixedArray implements JsonSerializable now.
8.0.0 SplFixedArray implements IteratorAggregate now. Previously, Iterator was implemented instead.

Examples

Example #1 SplFixedArray usage example

<?php
// Initialize the array with a fixed length
$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"

// Increase the size of the array to 10
$array->setSize(10);

$array[9] = "asdf";

// Shrink the array to a size of 2
$array->setSize(2);

// The following lines throw a 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";
}
?>

The above example will output:

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

Table of Contents