No associative array there. What you have is an array of objects, which is probably the best form for the data. There is no "$posts['post_title']" but there is "$posts[0]->post_title" and "$posts[1]->post_title". Be sure to understand the structure of your data; it's a very important detail if you want your code to actually work.
Did you get this as the result of a SQL query? If so, just add "order by post_title" to get what you want.
If not, a slight change to the code I posted earlier to make it work with an array of objects instead of an array of associative arrays:
function compare_by_post_title($a, $b) {
return strcmp($a->post_title, $b->post_title);
}
usort($posts, 'compare_by_post_title');