在下面的代码中,有没有办法在调用变量后修改变量的内容?在这个非常简单(并且毫无意义)的例子中,当$ foo被调用时,我希望它能回显'baryay',而不是'bar'而不需要事先调用changefoo()。必须在之后调用changefoo。
<?php
changefoo(){
global $foo,
$foo .= 'yay';
}
$foo = 'bar';
echo $foo;
changefoo();
?>
等待一般编码方法的骚扰和建议。
答案 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.