That won't change the global $x.
Not really "again", since the two xes (the one in the global scope and the one in the function scope) are two separate variables that happen to share the same name, but not the same scope.
A couple ways to do it:
function func_a()
{
return 2;
}
$x = 1;
echo $x; // 1
$x = func_a();
echo $x; // 2
function func_b(& $y)
{
$y = 2;
}
$x = 1;
echo $x; // 1
func_b($x);
echo $x; // 2