Как ассоциативные массивы реализованы в PHP?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

24
задан Gordon 31 March 2016 в 10:10
поделиться

4 ответа

Ну, если это имеет значение весь массивами PHP являются Ассоциативные массивы.

6
ответ дан EBGreen 29 November 2019 в 00:15
поделиться

@EBGreen корректен.

, Который дает Вам некоторые интересные проблемы производительности, особенно при обработке массива как списка и использовании [] (массив добавляют), оператор. PHP, кажется, не кэширует самый большой числовой ключ и не добавляет тот к нему, вместо этого это, кажется, пересекает все ключи для нахождения, каков следующий числовой ключ должен быть. Я переписал сценарии в Python из-за мрачной array-as-a-list производительности PHP.

Ассоциативные массивы имеют стандарт dict/hash производительность наверху.

3
ответ дан jcoby 29 November 2019 в 00:15
поделиться

Это - все хэш-таблицы, согласно источникам на различных веб-форумах: http://www.usenet-forums.com/php-language/15348-zend-engine-array-implementation.html

, Если Вы хотите быть уверенными, считайте источник, затем скомпилируйте его, но удостоверьтесь, что Вы можете доверять своему компилятору (Предупреждение: PDF, и не связанный, но очень прохладный).

2
ответ дан jakber 29 November 2019 в 00:15
поделиться

Это хеш-таблица. Объявление типа и функция хеширования находятся здесь:
http://svn.php.net/viewvc/php/php-src/trunk/Zend/zend_hash.h?view=markup

Есть легкий массив и связанный список в spl (стандартная библиотека php)

7
ответ дан 29 November 2019 в 00:15
поделиться
Другие вопросы по тегам:

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