Having trouble rendering a block I've defined a block that returns a string of HTML as follows:

function product_block_view($delta = '')
{
  switch ($delta) {
    case 'groups_images':
      $block['subject'] = t('Category Images in Groups');
      $block['content'] = "&lt;div&gt;Group images html&lt;/div&gt;";
      break;

    case 'singles_images':
      $block['subject'] = t('Category Images as Singles');
      $block['content'] = "&lt;div&gt;Single images html&lt;/div&gt;";
      break;

    default:
      break;
  }

  return $block;
}


This block lives in a custom region named 'myregion'.  I am attempting to render this block's view with &lt;?php render($page['myregion']) ?&gt; but nothing comes through. The dump of $page['myregion'] looks something like this:

    array (size=4)
        'product_groups_images' =&gt; 
            array (size=5)
              '#markup' =&gt; string '&lt;div&gt;Groups images html&lt;/div&gt;' (length=29)
              '#contextual_links' =&gt; 
                array (size=1)
                  'block' =&gt; 
                    array (size=2)
                      0 =&gt; string 'admin/structure/block/manage' (length=28)
                      1 =&gt; 
                        array (size=2)
                          ...
              '#block' =&gt; 
                object(stdClass)[116]
                  public 'bid' =&gt; string '77' (length=2)
                  public 'module' =&gt; string 'product' (length=7)
                  public 'delta' =&gt; string 'groups_images' (length=13)
                  public 'theme' =&gt; string 'id' (length=2)
                  public 'status' =&gt; string '1' (length=1)
                  public 'weight' =&gt; string '0' (length=1)
                  public 'region' =&gt; string 'findyourflavor' (length=14)
                  public 'custom' =&gt; string '0' (length=1)
                  public 'visibility' =&gt; string '1' (length=1)
                  public 'pages' =&gt; string '&lt;front&gt;' (length=7)
                  public 'title' =&gt; string '' (length=0)
                  public 'cache' =&gt; string '1' (length=1)
                  public 'subject' =&gt; string 'Category Images in Groups' (length=25)
              '#weight' =&gt; int 1
              '#theme_wrappers' =&gt; 
                array (size=1)
                  0 =&gt; string 'block' (length=5)
        '#sorted' =&gt; boolean true
        '#theme_wrappers' =&gt; 
            array (size=1)
              0 =&gt; string 'region' (length=6)
        '#region' =&gt; string 'findyourflavor' (length=14)


Any idea what I'm doing wrong that is causing my div to not be rendered by the render function?
You forgot to print the results. Use: 

&lt;?php print render($page['myregion']) ?&gt;




Explanation:

During a page request, Drupal keeps all the data it loads in PHP arrays for as long as possible. The reason for this is, that as long as the data is in arrays, it can be changed by other elements. This is the power of Drupal's module system. 

The array posted in the question is such a data array, it's called a "Render array". Eventually this array must be converted to HTML, this is what render does: it converts a drupal render array to an HTML string. Calling render often happens at end of a page request.

So calling render gives you an HTML string that should be returned to the user, e.g. by printing it in a template file.