(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Класс SplFixedArray обеспечивает базовую функциональность, предоставляемую массивами. Главное различие между SplFixedArray и обычным массивом PHP в том, что размер SplFixedArray необходимо изменять вручную, а в качестве индексов могут выступать только целочисленные значения. Преимущество данных ограничений заключается в меньшем использовании памяти, чем стандартный массив (array).
Версия | Описание |
---|---|
8.2.0 | Магические методы SplFixedArray::__serialize() и SplFixedArray::__unserialize() добавлены в SplFixedArray. |
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