Javascript 将PHP变量放在标签内

Javascript 将PHP变量放在标签内,javascript,php,Javascript,Php,我有一个问题一直困扰着我,因为我真的找不到答案 假设我运行这个: <label><?php echo $c; ?></label> <?php $a = 100; $b = 50; $c = $a + $b; ?> 它会说它不知道$c,因为它稍后在脚本中声明,是否有一种方法可以使用PHP在标签中设置变量。我知道php的方式非常有限,因为它只是onload。但我一直在想,是否有一种方法可以做到这一点,而不用将标签放在php脚本下 我也对jav

我有一个问题一直困扰着我,因为我真的找不到答案

假设我运行这个:

<label><?php echo $c; ?></label>

<?php
$a = 100;
$b = 50;
$c = $a + $b;
?>

它会说它不知道$c,因为它稍后在脚本中声明,是否有一种方法可以使用PHP在标签中设置变量。我知道php的方式非常有限,因为它只是onload。但我一直在想,是否有一种方法可以做到这一点,而不用将标签放在php脚本下

我也对javascript方式持开放态度。只要我能在标签中设置php变量

提前谢谢


编辑:这并不是说我不知道如何正确地做在回声之前。但我只是想知道是否有其他方法可以实现…

在创建变量之后,您需要使用变量

    <?php
    $a = 100;
    $b = 50;
    $c = $a + $b;
    ?>

    <label><?php echo $c; ?></label>

如果您对javascript持开放态度,您可以这样做:

首先,给标签一个
id

<label id="label">...</label>
。。。
然后在php中添加以下内容:

echo '<script>document.getElementById("label").innerHTML = "'.$c.'";</script>';
echo'document.getElementById(“标签”).innerHTML=“”.$c.“;”;
是的,试试:

<label>
<?php 
$a = 100;
$b = 50;
$c = $a + $b; 
echo $c; 
?>
</label>

在PHP编程中,它自上而下执行。变量必须有一个值才能回显:

<label><?php echo $c; ?></label>

<?php
$a = 100;
$b = 50;
$c = $a + $b;
?>

上述内容不正确,因为变量$c还没有值。您需要首先执行标签前面的PHP代码,如下所示:

?> 上面的$c现在包含$a和$b的总和。

试试这个:-

<label><?php label(); ?></label>

<?php
function label()
{
 $a = 100;
 $b = 50;
 $c = $a + $b;
 echo $c;
}
?>

如果您真的希望在输出之前有变量,您可以为它使用一个类::

<?php
class some{
    public function __construct(){

    }

    public function really(){
        $a = 100;
        $b = 50;
        $c = $a + $b;
        return $c;
    }
}
?>
<?php $some = new some();?>
<label>This is C = <?php echo $some->really(); ?></label>

这是C=

好吧,评论是关于你台词的顺序,但我想你必须这么做。。。所以 1-为标签提供一个id:

<label id="label4c"></label>

我看不出你需要这样做的真正原因,但这是一个刺激性的练习。正如许多其他人已经告诉您的那样,在简单的PHP中无法做到这一点,因为脚本是自顶向下执行的,并且您试图在赋值之前打印变量

您要求提供javascript解决方案,下面是一个在dom完全加载后向您显示正确值的解决方案:

<label><script>
document.onreadystatechange = function () {
  if (document.readyState == "complete") {
    document.write(c);
   }
}
</script></label>

<?php
$a = 100;
$b = 50;
$c = $a + $b;
?>
<script>var c = <?php echo $c;?>;</script>

document.onreadystatechange=函数(){
如果(document.readyState==“完成”){
文件。编写(c);
}
}
var c=;

这段代码非常幼稚,我不建议在真实环境中使用它(同样,它不能在任何设备中工作),因为它编写得不好,也不容易维护。我宁愿告诉你考虑一下你的流程,了解你是否真的需要做你认为需要的事情(在分配之前写一个变量)。我绝对相信有一种方法可以重新设计你的脚本来编写更好的代码:你可能把一些简单的东西复杂化了。祝你好运

简单地说,您应该通过脚本尝试此操作

<label id="p1"></label>

<?php
$a = 100;
$b = 50;
$c = $a + $b;
?>

<script>
document.getElementById("p1").innerHTML="<?php echo $c; ?>";
</script>

document.getElementById(“p1”).innerHTML=“”;

听起来很愚蠢,为什么不把标签放在php部分后面呢?使用
printf(“%d”($a+$b))
而不是echo,在内部label@diEcho这将打印0,这不是预期的结果result@LorenzoMarcon看:@diEcho这很简单,但不是OP要求的。。他想在实例化之前打印它。试着把printf放在第一行,你的例子就不会有好的答案,我需要一点时间来理解它。但在它被接受之后,这只是一个绝妙的解决方案。他说他必须在标签后定义$c(原因未知)…不,他从来没有说过必须这样做。他说它只是:
,因为它在脚本后面声明了
,还有
,但我一直在想,是否有一种方法可以做到这一点,而不将标签放在php脚本下面。
哦,突然,你让我羞愧了*是的,这就是我的想法,我知道这是不可能的,但我想知道是否有任何方法(javascript)。我知道这对一个简单的http请求是有效的,OP要求使用js替代方案……但这真的很难看,如果通过xhr(ajax)加载脚本,就会导致问题callI会说,除非你有更好的观点,否则将javascript与php>>>混合是非常糟糕的做法?Rolen Koh的答案看起来更好,但问题在javascript部分。我想混合是他想要的。因为你告诉他包含另一个库,因为只使用
innerHTML
是对javascript开放的;)但他患有的是脚本顺序混乱综合征。。即使他做了javascript,它也不会像现在这样工作;)他的编辑说,他正在寻找解决方案,但不带低于$c的标签:)所以他没有什么办法:)这纯粹是一个示例脚本,而不是需要做的事情,我只是好奇地问,在分配它之前,是否有什么东西可以回显$。太好了,这是我的猜测。这是一种可以做到这一点的方法(按照您的要求,使用javscript)
echo "<script>jQuery(document).ready(function () { 
jQuery('#label4c').text('$c');
});</script>";
<label><script>
document.onreadystatechange = function () {
  if (document.readyState == "complete") {
    document.write(c);
   }
}
</script></label>

<?php
$a = 100;
$b = 50;
$c = $a + $b;
?>
<script>var c = <?php echo $c;?>;</script>
<label id="p1"></label>

<?php
$a = 100;
$b = 50;
$c = $a + $b;
?>

<script>
document.getElementById("p1").innerHTML="<?php echo $c; ?>";
</script>