В Java и C++, когда мы не знаем размера - массив, не используемый как в PHP, вместо этого использовал linkedList и т.д.
В PHP существуют SPL, но большая часть массива использования программистов времен, почему (потому что люди не знают о SPL)?
Когда мы должны использовать Массив в PHP и whenSPL и каково различие в этом случае между PHP и Java/C++?
Каждый запрос 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
Вы просите нас сравнить два массово разных объекта, почти единственное сходство в том, что они оба (массивы и SPL) доступны в PHP.
С этой целью было бы по сути бессмысленным напрямую сравнивать или предписывать, когда одно должно использоваться вместо другого, когда оба могут использоваться для выполнения задачи. В этой заметке, оба могут использоваться переплетенными: например, используя ArrayIterator
для итерации по массиву, или ArrayObject
, чтобы использовать стиль массива синтаксис при работе с объектами.
Вы также, кажется, не совсем понимаете, что такое SPL; это, конечно, не ограничивается инструментами, используемыми для итерации по коллекциям вещей. Вы хотели спросить об определенных частях библиотеки, или, возможно, вам просто неясно, что в ней доступно?
Используйте стандартные массивы, это быстрее, чем ArrayObject.
Используйте ArrayObject только для реализации ваших собственных указанных массивов с вашими пользовательскими методами.