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,最大堆,最小堆