KeyedContainer allows you to do (foreach $value as $k => $v, $value[$key]) and is an interface used by both Hack arrays (vec/dict/keyset) and Hack collections (Vector/Map/Set)

If you need to iterate over an array / collection with keys, use KeyedContainer; otherwise, use Container. Without iterating, you can access keys directly: $keyed_container[$key].


Interface Synopsis

namespace HH;

interface KeyedContainer implements Container<Tv>, KeyedTraversable<Tk, Tv> {...}