考虑:
$name = "algs";
<input type="text" name="name" value="<?php echo $name?>">
现在,我对PHP非常陌生,上面的代码让我非常困惑:我知道echo是根据手册用来输出字符串的。但是我们为什么要做
value="<?php echo $name?>"
不仅仅是
value="<?php $name?>" //if I only want to put it inside a textfield
我以为它只是输出字符串。根据结果,我认为它正在返回它。我第一次读到这篇文章时,我认为php的操作如下:
value="std::cout $name << ''n' ?>" //just an example
有人能解释一下吗?如果我们只想将变量的值存储到另一个变量,为什么必须使用echo?
由于您似乎对c++有一点了解,下面是我的解释:
<?php $name = 'Test'; $name ?>
相当于
std::string name = "Test"; name;
这不会输出任何字符串,是吗?这只定义了一个变量,但从不将其内容打印到屏幕上。
但你要找的是:
<?php echo $name ?> or <?= $name ?> (both are the same)
相当于
std::cout << name;
这会将可变内容打印到屏幕上,或者在您的情况下打印到html中。
您需要告诉PHP解释器您希望回显变量。它并不自然地假设变量将被写入输出缓冲区。
在这种情况下,您不会将一个变量的值存储为另一个变量。您正在编写HTML代码(到输出缓冲区),并且还希望带来变量的值并将其写入输出缓冲区,这需要使用echo(或print)。
这是因为$name只是变量,你并没有告诉php什么都不做。使用echo,你告诉php在html输出中打印$name的值。
所以如果$name的值是"kevin"
<input type="text" name="name" value="<?php echo $name?>">
输出将是
<input type="text" name="name" value="kevin">
否则,如果你不写"回声":
<input type="text" name="name" value="<?php $name?>">
将输出
<input type="text" name="name" value="">
我认为这很重要,因为我认为这是php的一个常见问题,当人们第一次学习它时,人们并没有很好地理解它。要得到的是html和php基本上是独立的。一个在下一个发生之前执行并完全完成:
客户端的计算机正在处理html代码。php正在服务器上执行。这两个项目实际上并没有以你的思维方式相互作用。考虑服务器上的一个普通的静态html文件。它被发送到客户端计算机,然后由chrome或其他浏览器进行渲染。php正在做的是预处理html文件。在某种程度上,您可以将其视为在html文件发送之前对其进行的自定义编辑。
因此,基本上PHP执行,准备html,然后将其提供给浏览器进行渲染。PHP运行,然后停止运行,然后将html提供给浏览器。轮到浏览器时,php变量$name已不存在。而且,它们通常是两台独立的计算机。
因此,您必须将变量回显到html中。这种技术也可以与javascript一起使用。