关于php:SPL-数据结构3SplFixedArray

6次阅读

共计 1075 个字符,预计需要花费 3 分钟才能阅读完成。

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

正文完
 0