Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @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
Содержание
- SplFixedArray::__construct — Создает новый массив фиксированной длины
- SplFixedArray::count — Возвращает размер массива
- SplFixedArray::current — Возвращает текущий элемент массива
- SplFixedArray::fromArray — Импортирует PHP-массив в объект класса SplFixedArray
- SplFixedArray::getSize — Получает размер массива
- SplFixedArray::key — Возвращает индекс текущего элемента массива
- SplFixedArray::next — Переходит к следующему элементу массива
- SplFixedArray::offsetExists — Возвращает факт наличия указанного индекса массива
- SplFixedArray::offsetGet — Возвращает значение по указанному индексу
- SplFixedArray::offsetSet — Устанавливает новое значение по заданному индексу
- SplFixedArray::offsetUnset — Удаляет значение по индексу $index
- SplFixedArray::rewind — Выставляет итератор массива в начало
- SplFixedArray::setSize — Изменяет размер массива
- SplFixedArray::toArray — Возвращает обычный PHP-массив со значениями фиксированного массива
- SplFixedArray::valid — Проверяет массив на наличие элементов
- SplFixedArray::__wakeup — Reinitialises the array after being unserialised
User Contributed Notes 3 notes
9
artaxerxes ¶1 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 com ¶3 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