Наша группа в телеграмм для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Класс SplFixedArray

(PHP 5 >= 5.3.0)

Введение

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


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


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

Примеры

Пример #1 Пример использования SplFixedArray

// Инициализация массива фиксированной длиной
$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


Содержание


User Contributed Notes 3 notes



9
artaxerxes1 year ago
for($size = 1000; $size < 50000000; $size *= 2) {
    echo PHP_EOL . "Testing size: $size" . PHP_EOL;
    for($s = microtime(true), $container = Array(), $i = 0; $i < $size; $i++) $container[$i] = NULL;
    echo "Array(): " . (microtime(true) - $s) . PHP_EOL;
    for($s = microtime(true), $container = new SplFixedArray($size), $i = 0; $i < $size; $i++) $container[$i] = NULL;
    echo "SplArray(): " . (microtime(true) - $s) . PHP_EOL;
}


0
alex dot andrienko at gmail dot com3 years ago
Memory footprint of splFixedArray is about 37% of a regular "array" of the same size. 
I was hoping for more, but that's also significant, and that's where you should expect to see difference, not in "performance".


Описание класса splfixedarray, примеры использования класса splfixedarray.



Смотрите также:
Описание на ru2.php.net
Описание на php.ru

.

Популярное:


Содержание: