Я хочу изменить способ итерации объекта SPLObjectStorage, например, сначала отсортировав его по данным (информация).
Таким образом, в цикле он идет численно от a до z (используя функцию sort ())
Но в SPLObjectStorage нет доступа к массиву, верно?
Возможно ли это сделать, поскольку у нас нет доступа к массиву объектов?
Нет, это невозможно. внутренне SplobjectStorage
использовать ту же структуру данных, что и массив ( HashTable
), но это не «массив-массив», как мы знаем из пользовательского пространства PHP: мы только добавляем значения, а не ключи, поскольку ключи на самом деле генерируются из значений путем их хеширования (вы можете даже перезаписать это, перезаписав getHash
метод). Другое отличие состоит в том, что вы можете дополнительно добавить информацию к объекту.
Короче говоря, SplObjectStorage не следует использовать в качестве массива, но в качестве набора или карты в этом его сила.
Других решений пока нет …