When I try to do this:

```
function a()
{
    function b() { }
}

a();
a();

```

I get `Cannot redeclare b...`.  

When I tried to do this:

```
function a()
{
    if(!isset(b))
        function b() { }
}

a();
a();

```

I get `unexpected ), expected ...`.  

How can I declare the function as local and to be forgotten of when `a` returns? I need the function to pass it to `array_filter`.