, который следует использовать для управления данными, массивом или массивом? Как поиск, сортировка и другие манипуляции с массивами.PHP Array и ArrayObject
ответ
Основной вид: array
. Это карта ключей и значений, которые можно записать, прочитать и получить доступ в цикле.
ArrayObject
- это класс, который можно расширить для создания объектов, которые ведут себя так, как если бы они были массивами. Он реализует такие методы, как count
и sort
, которые позволяют обрабатывать объект, как если бы вы обрабатывали массив. Это часть SPL (стандартная библиотека PHP).
Обычно вы используете array
. Вы узнаете, когда вам понадобится ArrayObject
.
В большинстве случаев массив - это все, что необходимо. ArrayObject наиболее полезен при расширении для функциональных возможностей в конкретных целях.
использовать array
для простых (и стандартных) массивов
ArrayObject
класса, который может быть использован для повышения собственных классов, которые будут использоваться в качестве массивов (скажем, некоторые коллекции Класс вашего)
ArrayObject в основном полезен при необходимости сериализации.
Также вы можете создать свой собственный класс коллекции, расширив arrayObject. Затем вы можете сериализовать объект класса для передачи данных.
для простого и обычного массива операций более предпочтительным, чем arrayObject.
Объект Array может быть расширен и функции скрыты. Например, ваша функция Append() может форматировать число до двух знаков после запятой перед вызовом родительского :: Append()
В срок исполнения, вы не заметите реальную разницу между array
и ArayObject
. Я выполняю простой тест. Идея заключалась в создании массивов с использованием array() и нового ArrayObject и заполнении их увеличением числа значений.
<?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
с помощью собственного итератора, методов ...
- 1. Php, Spl, ArrayObject, ArrayObject :: STD_PROP_LIST
- 2. Разница между ArrayIterator, ArrayObject и Array в PHP
- 3. PHP - Сортировка ArrayObject
- 4. PHP ArrayObject внутренние работы
- 5. Фильтр ArrayObject (PHP)
- 6. Php - пустой ArrayObject
- 7. PHP ArrayObject вставки внутри массива
- 8. PHP рекурсивно превращая ArrayObject в ассоциативный массив
- 9. Ошибки объявления ArrayObject в PHP
- 10. Сбросить значение внутреннего указателя массива PHP (ArrayObject)
- 11. Расширенный PHP ArrayObject не работает должным образом
- 12. один вопрос, связанный с ArrayObject in php
- 13. PHPDoc переменная класса ArrayObject
- 14. Mock ArrayObject с PHPUnit
- 15. Получить значение ключа из ArrayObject
- 16. Использование ArrayObject для хранения массивов
- 17. Как десериализируется в ArrayObject
- 18. Php array и json
- 19. php и $ _GET array
- 20. PHP Array и константы
- 21. Равный к новому ArrayObject
- 22. Многомерный массив ArrayObject
- 23. ArrayObject :: getIterator error
- 24. Расширение ArrayObject: Почему get_object_vars возвращает пустой массив?
- 25. PHP foreach array array
- 26. array array php mysql
- 27. PHP Arrays, могу ли я определить свой собственный класс Array?
- 28. PHP Разница между array() и []
- 29. PHP Unserialize и Accessing array
- 30. Комбинат и курорт PHP Array
У вас есть пример того, что вы хотите сделать? – willoller
Мне нужно выполнить поиск, сортировку и другие сложные манипуляции с использованием массива в основном для его использования в алгоритме. Поэтому мне нужно знать, какой из них лучше и быстрее. – Imrul