如何在声明变量之前输出变量?PHP

5

我需要在页面中输出一个变量,但是这个值是在包含到页面后才被声明的。

有没有办法在我声明变量之前输出它?或者某种方式可以包含页面而不运行任何代码并且只获取变量?


也许你应该更详细地解释一下你试图解决的问题。查阅ob_start函数的文档也可能会很有帮助。 - Boldewyn
6个回答

10

没有语言能够在值存在之前明显地输出该值。


1
任何编程语言都可以实现,但是它们会根据其“未声明”错误定义打印 null、undefined 或 void。 - markcial
3
@markcial:我说的是“值”。如果一个变量不包含任何值(或者甚至没有被定义),它会输出“nothing”,这可能类似于“undefined”或“null”。这更或多或少是缺失值的占位符,但不能被视为值。 - KingCrunch
有时候,最简单的答案是最好的 :D - Tom
我只是开玩笑 :) 无论如何,任何具有意义或表示的东西都是一个值,所以我认为未定义、空或空值,虽然它们的表示是不安全的,不能处理而导致意外行为。 - markcial

4
如果你想要做类似于...的事情,你可以这样做...
echo $var;

$var = "Hello world";

那么答案是否定的。PHP是一种向下运行而不是任意方向的解释性语言。


好的,只是想确认一下。 我记得读过PHP在输出之前会运行整个代码....。 谢谢 :) +1 - Tom
@Tom,是的,你可以在定义之前使用函数和类,但不能使用变量...毕竟它是一种命令式语言。 - rid
@Tom 我认为你在考虑 debug_backtrace(),它确实可以反向读取整个树形结构。 - James

4

最简单、最好、最明智的选择是修复您的逻辑,使所有事情按照逻辑顺序发生。

如果无法实现,可以将数据存储在变量中而不是输出它。在需要变量的位置包含一个占位符。然后,在获取所需数据后对该占位符进行搜索和替换。


3
你可以构建类似于模板的解决方案。在页面中添加像##var##这样的内容,使用ob_start()在页面开头,定义你的$var在任何地方,然后,在页面结束时,使用echo str_replace('##var##', $var, ob_get_clean());
举个例子:
<?php ob_start() ?>
<p>##test##</p>
<?php $test = "this is a test paragraph" ?>
<?php echo str_replace("##test##", $test, ob_get_clean()) ?>

查看ob_start()ob_get_clean()


现在我有点迷失 :) 我的 PHP 只限于 if/else、includes 和 echo 哈哈 但还是谢谢 - Tom
问题在于,在定义变量之前,你当然不能使用它们。一个解决方法是渲染整个页面,在页面中放置占位符,然后在脚本的末尾在变量被定义之后用变量的值替换这些占位符。 - rid
已更新答案,附有示例和参考资料。 - rid

2

有一种方法可以在PHP中使用JavaScript来实现这种回显。

$echo  = document.getElementById('dispaly_div').innerHTML = "$variable";

0

一种方法是使用函数。

例如:

function printvar($string) {
  echo $string;
}
      
printvar("Hello World!");

这已经经过测试并且可以正常工作。


请对您的代码进行排版,并更详细地描述您的答案。 - isuruAb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接