Это означает "гигабайт", или "один миллиард байт".
Тонкость в том, что "миллиард" тут такой... сомнительный. Исторически жэто пощло от того, что 2^10 - это 1024. Почти что тысяча. Поэтому 1024 байта стали называть "килобайтом". Ну а потом по аналогии пошло, что 1024*1024 (2^20) стали называть мегабайтом, 1024*1024*1024 стали называть гигабайтом и т. п. (вплот до эксабайта).
Штука, правда, в том, что 1024 - это всё ж не ровно 1000. Для иллюстрации анекдот: чем настоящий прогрммист отличается от чайника? Настоящий программист уверен, что килограмм - это 1024 грамма. Эта ошибка в 2,4% при повышении "веса" накапливается, и 1024 в кубе - это уже сильно не миллиард. Поэтому в современной литературе чётко различаются обычные десятичные приставки (кило, мега, гига...) - и соответствующие двоичные приставки (киби, меби, гиби и т. д). Так что сейчас гигабайт - это натурально 1000 000 000 байт. А "двоичный гигабайт" (гибибайт) - это 1 073 741 824 байт. Отличие в 7%. Для терабайтного диска это уже существенно - 1 тебибайт больше 1 терабайта на 99 511 627 776 байт, или почти 100 гигов. Это ж до хренища места...
Так легче сосредоточиться на работе, когда пишешь код. Кто-то надевает наушники, чтобы не слышать окружающих, кто-то сидит, обхватив голову. Умственная работа вещь такая - требует концентрации и погружения в процесс, а для этого нужно отстраниться от окружающего мира. Это сродни погружению человека в сон и в этот момент действительно остальной реальности как будто не существует. Физически человек находится в офисе, а мозг уходит в написание программы и строит в голове отдельную реальность, где программист одновременно и вся система целиком, и каждая ее отдельная деталь.
Если понаблюдаете за программистом в этот момент, то можно заметить, что человека сейчас как бы нет в "нашем" мире. Он там где-то в "том" своем. Как будто человек или заснул, или ушел в транс. Зато продуктивность работы при переходе в такое состояние возрастает в разы.
Вот для того, чтобы перейти в "тот" мир и в нем оставаться, некоторые натягивают капюшон, некоторые наушники, а кто-то предварительно читает статьи на хабре - здесь ритуал у каждого свой.
Да, со стороны это действительно выглядит странно, но это помогает работать.
Для этого надо хотя бы записать дату последней отправки в файл и выдергивать оттуда значение прогоняя по условию.
Кратко напишу
if ($my ==1)
{
открываем файл
if(сверяем прошел ли час)
{если прошел то отправляем емейл
записываем новое значение текущего времени в файл}
}
В стародавние времена один мудрый педагог пояснял мне так:
Это как "карман", в него можно положить, можно в нем хранить, можно из него взять. Больше чем он вмещает не положишь. И каждый карман для хранения определенных вещей, внутренний для документов, в брюках для монет, в жилетке для часов.
Дело в примере далеко не в foreach. Здесь имеет место тяжёлый случай для языков программирования, в которых тип данных для переменной не определяется строго, к которым и относится PHP. Попробуйте заменить первый элемент массива на любое другое число - и этого "глюка" уже не будет.
Проблема в том, что интерпертатор PHP пытается сам подобрать подходящий для сравнения тип данных у переменной $value. Думаю, его логика такая, что он считает $value логической переменной (Boolean), в результате 0 превращается в FALSE. Но на другой стороне сравнения стоит одна буковка (Char), в результате чего FALSE преобразуется до F.
Чтобы избавиться от этого "глюка", можно использовать такие варианты:
- Явно указать тип переменной $value в сравнении.
- Использовать строгую проверку, чтобы PHP не приводил сравниваемые данные к наиболее подходящему типу.