Programmatically show field in different regions depending on content
"I have some pages with three regions in the content zone, I want to
  output a field in all three regions so they can be shown &amp; hidden at
  different screen sizes with CSS..."


If this is the case, you could solve this entirely in CSS, by using media queries to show / hide areas -or your field -depending on the browser size. And you don't even need to have the same field in all the three regions.

However, if what you want is to show / hide columns inside your content depending on a field value, you might be looking for the Display Suite module, which allows you to easily create different layouts and view modes. For example, you could:


Create one view mode with 2 columns and another one with 3 columns. 
Add the fields you want to display in each one of those view modes.
If you want to switch the view mode, depending on whether a field has a value or not, you could use hook_entity_view_mode_alter() like this:

function YOUR_MODULE_entity_view_mode_alter(&amp;$view_mode, $context) {
  // If viewing a node in the two_columns view mode... 
  if ($context['entity_type'] == 'node' &amp;&amp; $view_mode == 'two_columns') {

    // If your field 'something' has a value, change the view mode to 'three_columns'.
    if (!empty($context['entity']-&gt;field_something)) {
      $view_mode = 'three_columns';
    }
  }
}



Or you could also use the Contextal View Mode module to change the view mode for a node based off of a context.