如何修改PHP中已调用的echo?变量?

时间:2012-01-03 15:32:56

标签: php function variables

在下面的代码中,有没有办法在调用变量后修改变量的内容?在这个非常简单(并且毫无意义)的例子中,当$ foo被调用时,我希望它能回显'baryay',而不是'bar'而不需要事先调用changefoo()。必须在之后调用changefoo。

<?php

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

$foo = 'bar';
echo $foo;

changefoo();


?>

等待一般编码方法的骚扰和建议。

5 个答案:

答案 0 :(得分:3)

没有。一旦你写了一些东西到输出,你很难回去改变它。您需要重新调整流程以满足您的需求。

把它想象成一台真正的打印机。如果您在一张纸上打印某些内容,即使该页面尚未打印,您也无法返回并修改所打印的内容。

答案 1 :(得分:2)

相信这是可能的。


还可以尝试来使用global。只需传递变量:

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

$foo = 'bar';

changefoo($foo);

echo $foo; //baryay

答案 2 :(得分:2)

不,一旦回显,你就无法在不使用javascript / jquery的情况下改变屏幕上显示的内容。如果你想要它回应“baryay”,你需要写:

echo $foo."yay";

答案 3 :(得分:1)

如果它是echo语句的结果,则它不再是变量。您可以使用常规输出缓冲功能更改脚本输出,无论它来自何处:

<?php

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

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

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

?>

答案 4 :(得分:0)

我知道这是旧的,但这是一个想法。

这将回显“bar”,然后在 5 秒后将其更改为“blah”

<?php
ob_start(); // output buffering on
$foo = 'bar'; // set $foo initially
echo "<span id='foo'>$foo</div>"; // echo $foo along with some HTML needed later

sleep(5); // wait 5 seconds for demonstration purposes

$foo = 'blah'; // set $foo again
ob_end_clean(); // output buffering off
echo "<script>document.getElementById('foo').innerHTML = $foo;</script>"; // outputs JS that changes the DOM innerHTML.