2014-01-24 126 views
0

爲什麼$ a不打印?全局範圍不打印數據

什麼是這種交替,我不想使用返回。

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

abc(); 
echo $a; 
+2

好,首先你確實有*調用*函數。 – Jon

+0

爲什麼你不想使用'return'? – Arjan

+0

很簡單,你不能在「變量」之後聲明它爲'global'「。全局必須在變量「之前」聲明(而不是你爲代碼發佈的內容)。另外,你需要將'echo $ a;'放在你的函數中,然後用函數調用'abc();'來代替函數外部的函數。 (測試) –

回答

1

爲什麼它不呼應的原因是因爲兩件事情:

1)您需要在您希望定義爲全局的變量之前聲明global

2)您還需要通話功能。

重寫:

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

abc(); 
echo $a; 

有關變量的作用域的詳細信息,請訪問PHP.net網站:

0

您可以使用define():

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

確保您調用該函數。我在回聲之上添加了那個。

+1

但是你需要認識到'define()'與變量不一樣。一旦定義,你不能改變一個const。 – Arjan

0

首先,您必須創建並分配一個變量。然後在你的函數中描述這是你想要使用的全局變量。

$a = 'zxc'; 

function abc() { 
    global $a; 

    $a = 'abc'; 
} 

abc(); 
echo $a; 

這是不是很好的想法使用golbal這種方式。我真的不明白爲什麼我非常想使用全局變量...

但我認爲你更好地使用指針變量。

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

$a = 'zxc'; 

abc(&$a); 
echo $a; 

甚至會更好地創建一個對象,然後訪問的變量:在此對象