2012-01-03 90 views
0

在下面的代碼中,有沒有辦法在變量被調用後修改其內容?在這個非常簡單(沒有意義)的例子中,當$ foo被調用時,我希望它在回調之前回顯'baryay',而不是'bar'而不需要調用changefoo()。 changefoo必須在之後調用。如何修改已在PHP中調用的echo'd變量?

<?php 

changefoo(){ 
    global $foo, 
    $foo .= 'yay'; 
} 

$foo = 'bar'; 
echo $foo; 

changefoo(); 


?> 

等待一般編碼方式的騷擾和建議。

+3

即使有迴音是後您的代碼將永遠** **回聲'baryay' – Neal 2012-01-03 15:34:39

+0

它永遠不會回聲永遠echo baryay – 2012-01-03 15:36:09

+0

我不知道這個問題是什麼問。你不「叫」一個變量。 – 2012-01-03 15:36:46

回答

3

號一旦你寫的東西輸出,你也很難回去改變它。您需要重構您的流程以符合您的需求。

認爲它像一個實際的打印機。如果您在一張紙上打印某些東西,即使該頁尚未打印完畢,也無法返回並修改打印的內容。

2

不要認爲是可能的。


也儘量不使用global秒。只是通過變量:

function changefoo(&$foo){ 
    $foo .= 'yay'; 
} 

$foo = 'bar'; 

changefoo($foo); 

echo $foo; //baryay 
2

不,一旦它被回顯,你不能改變什麼顯示在屏幕上,而不使用JavaScript/jQuery的。如果你想讓它回聲「baryay」,你需要寫:

echo $foo."yay";

1

如果這是echo聲明的結果,它不再是一個變量。你可以改變你的腳本輸出與常規輸出緩衝功能,無論它來自哪裏:

<?php 

function changefoo(){ 
    global $foo; 
    $foo = 'blah'; 
} 

ob_start(); 
$foo = 'bar'; 
echo $foo; 

changefoo(); 
ob_end_clean(); 
echo $foo; 

?>