PHP 数组和数组对象
2022-08-30 13:58:11
哪一个应该用于操作数据,数组或数组对象?如搜索,排序和其他数组操作。
基本类型为 。这是一个键和值的映射,可以在循环中写入、读取和访问。array
是一个类,您可以扩展该类以创建行为类似于数组的对象。它实现了类似 and 的方法,使您能够像处理数组一样处理对象。它是SPL(标准PHP库)的一部分。ArrayObject
count
sort
通常,您会使用 .您将知道何时需要 .array
ArrayObject
就性能而言,您不会注意到 an 和 .我运行了一个简单的测试。我们的想法是使用 array() 和新的 ArrayObject 创建数组,并用越来越多的值填充它们。array
ArayObject
<?php
for($i = 0; $i < 2; $i++){
$method = $i == 0 ? 'array' : 'ArrayObject';
for($j = 0; $j < 7 ; $j++){
for($k = 0; $k < 100; $k++){
$max = pow(10,$j);
$array = $method == 'array' ? array() : new ArrayObject;
$time = explode(' ',microtime());
$sTime = $time[0] + $time[1];
for($l = 0; $l < $max; $l++){
$array[] = 'foo ' . $i . ':' . $j . ':' . $k . ':' . $l;
}
$time = explode(' ',microtime());
$eTime = $time[0] + $time[1];
$results[$method][$max][] = $eTime - $sTime;
}
}
}
?>
结果
method lines average (µs) difference between methods (µs)
array 1 2.470 -1.044
array 10 8.452 +0.315
array 100 71.862 +10.719
array 1,000 773.826 +141.962
array 10,000 7,868.731 -675.359
array 100,000 76,954.625 -17,665.510
array 1,000,000 801,509.550 -84,356.148
ArrayObject 1 3.514 +1.044
ArrayObject 10 8.137 -0.315
ArrayObject 100 61.142 -10.719
ArrayObject 1,000 631.864 -141.962
ArrayObject 10,000 8,544.090 +675.359
ArrayObject 100,000 94,620.135 +17,665.510
ArrayObject 1,000,000 885,865.698 +84,356.148
平均值是每种方法和每行数的 100 个测试的平均时间。方法之间的差异非常小(当您处理一百万行时,需要84微秒...
我已经多次运行此测试,并且由于差异始终是微秒的问题,因此有时一种方法在一次测试期间效率更高,然后在下一次测试期间效率较低...
选择将取决于您的需求:
foreach()
array
ArrayObject class