Потому что нужно понимать, как работает php и области видимости.
Если переменной $m не было до цикла, то она создатся, а если была, то присвоится новое значение в каждой итерации.
Так вот, после цикла переменная, созданная в цикле ОСТАНЕТСЯ в памяти и может быть использована вне цикла, а раз ты внутри foreach приравниваешь все время к одному элементу, то и очевидно у тебя всегда она выдаст только одно значение.