Rendering nested array in a  with headings
This won't work if each suggestion does not start a new area.  


foreach($suggestions as $suggestion)
    {
    if($currentarea != $suggestion['area'])
        {
        echo "&lt;h3&gt;";
        echo $suggestion['area'];
        echo "&lt;/h3&gt;";
        if($status == 'closed')
            {
            echo "&lt;ol&gt;";
            $status = 'open';
            }
        }
    foreach($suggestion['activity'] as $activity)
        {
            echo "&lt;li&gt;";
            echo $activity;
            echo "&lt;/li&gt;";
        }
    if($status == 'open')
            {
            echo "&lt;/ol&gt;";
            $status = 'closed';
            }
    $currentarea = $suggestion['area'];
    }



You close on every iteration that it's open and add list items on every iteration, but you only open if the area changes.  

foreach($suggestions as $suggestion)
{
    echo '&lt;h3&gt;';
    echo $suggestion['area'];
    echo "&lt;/h3&gt;\n";
    echo "&lt;ol&gt;\n";

    foreach($suggestion['activity'] as $activity)
    {
        echo '  &lt;li&gt;';
        echo $activity;
        echo "&lt;/li&gt;\n";
    }

    echo "&lt;/ol&gt;\n";
}


This code is simpler and will work more reliably.  

This is the wrong place to discuss how to write new code.  But if you want to get the previous concept working, you'll want to open and close inside the if that checks if the area has changed.  Or pull off the first element of the list so that you can treat it differently.  Or make a new list where there's only one suggestion per area, combining multiple suggestions with the same area into one.