Прежде всего это должно сказать
foreach($a as $key => $value)
Тогда, насколько я знаю,
foreach($a = array())
не компилируется.
Тем не менее, если вы используете foreach, вы перебираете элементы массива. С ключевым словом «as» вы получаете пары ключ / значение для каждого элемента, где $ key будет индексом, по которому вы можете получить $ value:
$value = $a[$key];
Это ответило на ваш вопрос? Если нет, уточните.
редактирование:
В других языках программирования это будет что-то вроде
foreach($key => $value in $a)
или (C #)
foreach(KeyValuePair<type1, type2> kv in a)
, который, на мой взгляд, более интуитивен, но в основном тот же.