SPL vs. Array:我们什么时候应该使用SPL?什么时候应该在PHP中使用Array?

时间:2010-07-02 14:05:22

标签: php arrays spl

在java和C ++中,当我们不知道size - 数组没有像在PHP中那样使用时,而是使用了linkedList等。

在PHP中存在SPL,但大多数时候程序员都使用数组,为什么(因为人们不了解SPL)?

当我们在PHP和whenSPL中使用Array时,PHP和Java / C ++之间的区别是什么?

4 个答案:

答案 0 :(得分:3)

每个PHP请求都必须初始化所有变量,并在请求后释放它们。因此,特殊数据结构(如maxheap,linkedlist或queue)比数组更有效的情况并不常见。 此外,数组更容易理解并用于初学者。

PHP中与C ++的区别在于数组长度是动态的。您可以随时添加元素。

$arr=array();
$arr[]=5; //add integer to array
echo count($arr); //1
$arr[]=7;
echo count($arr); //2

您可以动态创建数组并将其添加到另一个数组

$arr[]=array();
$arr[2][]=5;
echo count($arr); //3
echo count($arr[2]); //1

这将创建新数组,添加值为5的元素并将其作为元素添加到数组$ arr。

$arr[][]=5;

在PHP数组中是哈希表,因此您不仅可以拥有整数键,还可以拥有字符串:

$arr['somekey']='somevalue';

如果数组元素是整数,那么每个元素都需要一个占用16个字节的值结构(zval)。还需要一个哈希桶 - 需要36个字节。这给每个值52个字节。内存分配标头需要另外8个字节* 2 - 它提供68个字节。

关于PHP中的数组:http://oreilly.com/catalog/progphp/chapter/ch05.html

答案 1 :(得分:2)

您要求我们比较两个大量不同的东西,几乎唯一的相似之处在于它们都是PHP中可用的(数组和SPL)。

为此,当两者都可以用于完成一项任务时,直接比较或规定当一个人应该被用于另一个人时,基本上是荒谬的。在这方面,可以使用两者交织在一起:例如,使用ArrayIterator迭代数组,或ArrayObject在工作时使用数组样式语法与对象。

你似乎也很困惑,或者只是不清楚SPL是什么;它肯定仅限于用于迭代事物集合的工具。您是否想询问图书馆的具体部分,或者您可能只是不清楚其中的可用内容?

答案 2 :(得分:1)

使用标准数组,它比ArrayObject更快。

仅使用ArrayObject通过自定义方法实现自己的指定数组。

答案 3 :(得分:0)

可能没有必要混淆,因为人们可以决定使用“SplStack”而不是与array_push / pop函数相关联的vanilla数组。或者以经典方式使用数组,

然后存在SplDoublyLinkedList,SplQueue,SplHeap。加上ArrayObject。

所以问题是有效的。答案是:你用更多的java方式做同样的事情,而且速度较慢。

一般来说,SPL是模仿标准的暂定标准。 “现成的”课程& API,就像在C ++和C ++中一样存在Java的。

恕我直言,来得太晚了。