SPL与数组:我们什么时候应该使用SPL,什么时候应该在PHP中使用数组?

StackOverflow https://stackoverflow.com/questions/3166405

  •  02-10-2019
  •  | 
  •  

在Java和C ++中,当我们不知道尺寸时 - 数组不像PHP中使用,而是使用LinkedList等。

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

当我们应该在PHP和何时使用阵列时,PHP和Java/C ++之间有什么区别?

有帮助吗?

解决方案

每个PHP请求都必须初始化所有变量,并在请求释放后。因此,不常见的情况下,特殊数据结构(例如Maxheap,LinkedList或队列)比数组更有效。同样,阵列更容易理解和用于初学者。

与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的元素,然后将其添加为元素到Array $ arr。

$arr[][]=5;

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

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

如果数组元素是整数,则每个元素需要一个值16字节的值结构(ZVAL)。还需要一个哈希桶 - 需要36个字节。这给出了每个值52个字节。内存分配标题另外8个字节*2-给出68个字节。

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

其他提示

您要我们比较两个 大量 不同的事情,几乎唯一的相似性是PHP中可用的(阵列和SPL)。

为此,直接比较或开处方的时候,当两个都可以使用两者都可以用来完成任务的时间时,将是荒谬的。在此注意, 两个都 可以使用交织在一起:例如,使用 ArrayIterator 迭代阵列或 ArrayObject 使用对象时使用数组式语法。

您似乎也对SPL是什么感到困惑,或者不清楚。当然 不是 仅限于用于迭代事物的工具。您的意思是询问图书馆的特定部分,还是您可能不清楚其中有什么可用?

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

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

也许不一定是混乱,因为人们可以决定使用“ splstack”,而不是与Array_push/pop函数关联的香草阵列。或以经典方式使用数组

然后存在spldoublylinkedlist,Splqueue,splheap。加上arrayObject。

因此,问题是有效的。答案是:您以更爪正在的方式做同样的事情,而且速度较慢。

SPL通常是模仿标准和“现成”类和API的暂定性,就像C ++和Java中存在一样。

恕我直言,为时已晚。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top