Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
array. Хотя согласен, это не массив в привычном понимании.>>> [item for item in dir(__builtins__)
... if isinstance(getattr(__builtins__, item), type) and item.lower() == item]
['bool', 'bytearray', 'bytes', 'classmethod', 'complex', 'dict', 'enumerate', 'filter', 'float', 'frozenset', 'int', 'list', 'map', 'memoryview', 'object', 'property', 'range', 'reversed', 'set', 'slice', 'staticmethod', 'str', 'super', 'tuple', 'type', 'zip']
foreach работает со всем, что поддерживает интерфейс Traversable: с массивами, с простыми объектами (где перечисляются доступные свойства) и с Traversable-объектами (вернее, объектами, у которых определен внутренний обработчик get_iterator)Эта формулировка явно смущает, ведь ни массивы, ни простые объекты не поддерживают Traversable.
iterator_to_array или применить instanceof.)foreach поддерживает значения разных типов, например, обычные массивы, обычные объекты, объекты, поддерживающие Traversable".тогда у нас получится цикл по коллекции объектов на экране, каждая итерация которого проверяет нажатие для конкретного объекта, и если оно успешно
var_dump((array)false);
// array (size=1)
// 0 => boolean false
echo count((array)false); // 1
Это потому что ключ FYFY имеет коллизию с EzFY (вообще-то, все ключи из этого массива тоже)
For those who don’t know how hashtables work: When you write $array[$key] in PHP the $key is run through a fast hash function that yields an integer. This integer is then used as an offset into a “real” C array (here “array” means “chunk of memory”).
Because every hash function has collisions this C array doesn’t actually store the value we want, but a linked list of possible values. PHP then walks these values one by one and does a full key comparison until it finds the right element with our $key.
О тонкостях работы foreach в PHP