How to get $nid inside hook_menu_alter function
Menus are cached; unless you have something funky going on, loading a node won't rebuild that cache (it would be frightfully expensive to do so).  

You need to make 'live' decisions in a callback, e.g.

function MYMODULE_menu_alter(&amp;$items) {
  $items['foo']['access callback'] = 'MYMODULE_access_callback';
}

function MYMODULE_access_callback() {
  $node = menu_get_object();
  if ($node &amp;&amp; $node-&gt;bar) {
    return TRUE; // Allow access.
  }

  return FALSE; // Default for anything that doesn't match your criteria.
}


The above is a contrived example, real-world will be different depending on exactly what you need to do.