Pull to refresh

Comments 3

Массив сразу создается упакованным если он инициализируется элементом с числовым ключом меньшим nTableSize. «Распаковка» происходит в следующих случаях:
1. Добавляется элемент со строковым ключем — тут все очевидно
2. Пустой массив инициализируется элементом с числовым ключем большим или равным nTableSize = HT_MIN_SIZE = 8. Точнее массив сразу инициализируется как mixed.
3. Добавляется элемент с числовым индексом меньшим, чем максимально использованный в массиве.
$arr = [];          // flags = HASH_FLAG_UNINITIALIZED, nTableSize = HT_MIN_SIZE
$arr[2] = 'a';      // Т.к. 2 < nTableSize, то массив инициализируется "упакованным". 
                    // [0=>IS_UNDEF, 1=>IS_UNDEF, 2=>'a' ... 7=>IS_UNDEF]
$arr[1] = 'b';      // Упс! Мы должны сохранять очередность элементов 
                    // массив "распаковывается" в хеш-таблицу

4. Производится сортировка с сохранением ключей
Sign up to leave a comment.

Articles