Det är väl idiotiskt att hämta allt data och lägga det i en array (motsv) för att hitta första och sista posten. Databaser är ju skapta för att söka och hämta information. Använd dem till det och gör inte jobbet själv utanfördatabasen!
Nu när mysql börjat stödja subqueries så blir det en enkel sak. Och jag antar att ID kolumnen är en inkrementell nyckel så det är lätt att hitta första (min(id)) och sista (max(id)) posten.
Kod:
SELECT first.username, last.username
FROM posts AS first, posts AS last
WHERE first.topic = last.topic
AND first.id IN (SELECT MIN(id) FROM posts WHERE topic = first.topic)
AND last.id IN (SELECT MAX(id) FROM posts WHERE topic = last.topic)