SPL 数据结构3-SplFixedArray

Posted tim_xiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPL 数据结构3-SplFixedArray相关的知识,希望对你有一定的参考价值。

SplFixedArray是php中提供的固定长度数组。php语言中的数组特别强大,可以实现栈,队列,列表,字典等数据结构。其底层是基于散列表实现的。而SplFixedArray表示的数组则接近于C GO等语言中的数组。其长度固定,索引下标为integers。相对php数组,SplFixedArray 拥有更高的执行效率(The advantage is that it uses less memory than a standard array)。

性能测试

实测SplFixedArray在时间和内存使用上相比array都有提升

for($size = 10000; $size < 50000000; $size *= 4) {
    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;
}

使用

//Initialize the array with a fixed length
$arr    = new SplFixedArray(4);
$arr[0] = \'php\';
$arr[1] = 1;
$arr[3] = \'python\';
// 超过索引下标会报数组越界 RuntimeException:
//$arr[4] = \'python\';
$arr->setSize(5);
// 这里不再报错
$arr[4] = \'python\';

echo "默认下标" . PHP_EOL;
var_dump($arr[2]);


echo "下标为0: " . $arr[0] . PHP_EOL;
// 这里也可以获取到元素
echo "下标为\\"0\\": " . $arr["0"] . PHP_EOL . PHP_EOL;


echo "开始遍历:" . PHP_EOL;
foreach ($arr as $v) {
    echo $v . PHP_EOL;
}

echo "数组长度:" . count($arr) . PHP_EOL;
echo "使用count方法获取数组长度:" . $arr->count() . PHP_EOL;

上一篇:SPL数据结构2-Heap,最大堆,最小堆

下一篇:SPL 数据结构4-SplObjectStorage

以上是关于SPL 数据结构3-SplFixedArray的主要内容,如果未能解决你的问题,请参考以下文章

spss 中怎么打开语句输入窗口 如何输入spl语句

从 Stream 到 Kotlin 再到 SPL

asp数据库查询spl查询语句?

关于spl中SELECT使用

在PHP中使用SPL库中的对象方法进行XML与数组的转换

在PHP中使用SPL库中的对象方法进行XML与数组的转换