If you wish to use a global within a function, you must declare it to be global at function level too, e.g.
$attacks_list = array();
function f1()
{
global $attacks_list; // <-- ADDED
$sql = "SELECT * FROM user_pokemon_db WHERE user_id = '".$id."' AND pkmn_id = '".$pkmn_id."' " or die(mysql_error());
$res = mysql_query($sql);
$$attacks_list = mysql_result($res,0,"attacks");
$attacks_list = unserialize($attacks_list);
print_r($attacks_list);
}
Have a look at the php.net article on variable scope for more information too: http://www.php.net/manual/en/language.variables.scope.php