I'm learning about PHP and I need some help on a global variable/scope problem. I need to access the value of $myvars in the outer function:
function outer() {
   function inner($atts) {
       $myvars = $atts['mydata'];
   }
   // I need to access the value of $myvars in here:
   $jsonized = json_encode($myvars);
}
function set_atts_func($atts) {
    inner($atts);
}
add_shortcode("my_short_code", "set_atts_func");
I've simplified the problem as much as I can. This is part of a WordPress plugin. I've tried making $myvars global as follows:
function inner($atts) {
    global $myvars;
    $myvars = $atts['mydata'];
}
But, I haven't figured it out. Any suggestions?
Additional Info:
If someone has a better way of solving my problem than using nested functions, I'd love to hear it.
This is for a WordPress plugin for my site. In short, I need to pass the $atts to a javascript script. 
Long Story: The add_shortcode() line calls set_att_func() and gives me access to the $atts. In order to pass $atts to the js, I'll use WordPress' wp_localize_script() function. 
But, this function can only be called where the script parameter referenced in wp_localize_script() call has been enqueued in wp_enqueue_script()-- at least as far as I can tell. I've tried moving the wp_localize_script() and  wp_enqueue_script() calls to set_atts_func() without any luck. So, I'm trying to get $atts into outer(), where the wp_localize_script() and  wp_enqueue_script() calls are.  
If there is a simpler and easier way to access $atts in outer(), let me know. 
 
     
    