Класс SplFixedArray

(PHP 5 >= 5.3.0, PHP 7)

Введение

Класс SplFixedArray обеспечивает базовую функциональность, предоставляемую массивами. Главное различие между SplFixedArray и обычным массивом PHP в том, что SplFixedArray имеет фиксированную длину, а в качестве индексов могут выступать только целочисленные значения. Преимущество данных ограничений заключается в более быстрой обработке массива.

Обзор классов

SplFixedArray implements Iterator , ArrayAccess , Countable {
/* Методы */
public __construct ([ int $size = 0 ] )
public count ( void ) : int
public current ( void ) : mixed
public static fromArray ( array $array [, bool $save_indexes = TRUE ] ) : SplFixedArray
public getSize ( void ) : int
public key ( void ) : int
public next ( void ) : void
public offsetExists ( int $index ) : bool
public offsetGet ( int $index ) : mixed
public offsetSet ( int $index , mixed $newval ) : void
public offsetUnset ( int $index ) : void
public rewind ( void ) : void
public setSize ( int $size ) : bool
public toArray ( void ) : array
public valid ( void ) : bool
public __wakeup ( void ) : void
}

Примеры

Пример #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

Содержание