SPL по сравнению с Массивом: Когда мы должны использовать SPL и когда мы должны использовать Массив в PHP?

В Java и C++, когда мы не знаем размера - массив, не используемый как в PHP, вместо этого использовал linkedList и т.д.

В PHP существуют SPL, но большая часть массива использования программистов времен, почему (потому что люди не знают о SPL)?

Когда мы должны использовать Массив в PHP и whenSPL и каково различие в этом случае между PHP и Java/C++?

6
задан hakre 18 April 2013 в 15:50
поделиться

3 ответа

Каждый запрос PHP должен инициализировать все переменные, а после запроса они освобождаются. Из-за этого не часто возникают ситуации, когда специальные структуры данных (например, maxheap, связанный список или очередь) более эффективны, чем массив. Также массивы намного проще понять и использовать новичкам.

Отличие от C ++ в PHP заключается в том, что длина массивов является динамической. Вы можете добавлять элементы в любое время.

$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';

Если элемент массива является целым числом, то для каждого элемента требуется структура значений (zval), занимающая 16 байтов. Также требуется хеш-ведро, занимающее 36 байт. Это дает 52 байта на значение. Заголовки выделения памяти занимают еще 8 байтов * 2, что дает 68 байтов.

О массивах в PHP: http://oreilly.com/catalog/progphp/chapter/ch05.html

3
ответ дан 17 December 2019 в 02:21
поделиться

Вы просите нас сравнить два массово разных объекта, почти единственное сходство в том, что они оба (массивы и SPL) доступны в PHP.

С этой целью было бы по сути бессмысленным напрямую сравнивать или предписывать, когда одно должно использоваться вместо другого, когда оба могут использоваться для выполнения задачи. В этой заметке, оба могут использоваться переплетенными: например, используя ArrayIterator для итерации по массиву, или ArrayObject , чтобы использовать стиль массива синтаксис при работе с объектами.

Вы также, кажется, не совсем понимаете, что такое SPL; это, конечно, не ограничивается инструментами, используемыми для итерации по коллекциям вещей. Вы хотели спросить об определенных частях библиотеки, или, возможно, вам просто неясно, что в ней доступно?

2
ответ дан 17 December 2019 в 02:21
поделиться

Используйте стандартные массивы, это быстрее, чем ArrayObject.

Используйте ArrayObject только для реализации ваших собственных указанных массивов с вашими пользовательскими методами.

1
ответ дан 17 December 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: