# Function inside a function.?

This code produces the result as 56.

``````function x (\$y) {
function y (\$z) {
return (\$z*2);
}

return(\$y+3);
}

\$y = 4;
\$y = x(\$y)*y(\$y);
echo \$y;
``````

Any idea what is going inside? I am confused.

X returns (value +3), while Y returns (value*2)

Given a value of 4, this means `(4+3) * (4*2) = 7 * 8 = 56`.

Although functions are not limited in scope (which means that you can safely 'nest' function definitions), this particular example is prone to errors:

1) You can't call `y()` before calling `x()`, because function `y()` won't actually be defined until `x()` has executed once.

2) Calling `x()` twice will cause PHP to redeclare function `y()`, leading to a fatal error:

Fatal error: Cannot redeclare y()

The solution to both would be to split the code, so that both functions are declared independent of each other:

``````function x (\$y)
{
return(\$y+3);
}

function y (\$z)
{
return (\$z*2);
}
``````

This is also a lot more readable.

``````(4+3)*(4*2) == 56