全局范围不打印数据

Why is $a not printing?

And what is the alternate of this, and I dont want to use return.

function abc () {
    $a = 'abc';
    global $a;
}

abc();
echo $a;

The reason why it's not echoing is because of two things:

1) You need to declare global "before" the variable you wish to define as being global.

and

2) You also need to call the function.

Rewrite:

<?php
function abc()
{
global $a;
$a = 'abc';
}

abc();
echo $a;

For more information on variable scopes, visit the PHP.net website:

You can get your variable as:

 echo  $GLOBALS['a'];

see http://php.net/manual/en/language.variables.scope.php

You can use define():

function abc() {
    define("A", "abc");
}
abc();
echo A;

Make sure you call the function. I added that just above echo.

First you must create and assign a variable. And then in you function describe that is a global var you want to use.

$a = 'zxc';

function abc() {
    global $a;

    $a = 'abc';
} 

abc();
echo $a;

This is not really good idea to use golbal such way. I don't really understand why I so much want to use a global var...

But my opinion is better for you to use a pointer to variable.

function abc(&$var){
  $var = 'abc';
}

$a = 'zxc';

abc(&$a);
echo $a;

Or even would be better to create an object and then access variable with-in this object