考虑:
$name = "algs";
<input type="text" name="name" value="<?php echo $name?>">
现在,我对PHP非常陌生,我对上面的代码非常困惑:我知道echo用于根据manual输出字符串。但为什么我们必须做
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?
答案 0 :(得分:5)
因为你似乎知道一点c ++,所以我的解释是:
<?php $name = 'Test'; $name ?>
相当于
std::string name = "Test"; name;
这不输出任何字符串吗?这只定义了一个变量,但从未将其内容打印到屏幕上。
但你要找的是:
<?php echo $name ?> or <?= $name ?> (both are the same)
相当于
std::cout << name;
这会将变量内容打印到屏幕上或您的html中。
答案 1 :(得分:3)
您需要告诉PHP解释器您希望回显变量。它自然不假设变量将被写入输出缓冲区。
在这种情况下,您不会将一个变量的值存储为另一个变量的值。您正在编写HTML代码(到输出缓冲区),您还希望带上变量的值并将其写入输出缓冲区,这需要使用echo(或print)。
答案 2 :(得分:1)
那是因为$ name只是变量,你不是在告诉php什么也不做。使用echo,您可以告诉php在html输出中打印$ name的值。
因此,如果$ name的值是“kevin”
<input type="text" name="name" value="<?php echo $name?>">
输出将是
<input type="text" name="name" value="kevin">
否则,如果你不写“echo”:
<input type="text" name="name" value="<?php $name?>">
将输出
<input type="text" name="name" value="">
答案 3 :(得分:1)
我认为这很重要,因为我认为这是关于php的一个常见问题,当人们第一次学习它时,它并没有被很好地理解。得到的是html和php基本上是独立的。一个人在下一次发生之前完成并完成:
html代码正由客户端的计算机处理。 php正在服务器上执行。这两个项目实际上并没有按照您的思维方式进行交互。考虑服务器上的普通静态html文件。这将被发送到客户端计算机,然后由chrome或其他浏览器呈现。 php正在做的是预处理html文件。在某种程度上,您可以将其视为在发送之前对html文件进行的自定义编辑。
所以,基本上PHP执行,准备html,然后它被提供给浏览器进行渲染。 PHP运行,然后停止运行,然后将html提供给浏览器。浏览器轮流时,php变量$ name不再存在。并且,无论如何,它们通常是两台单独的计算机。
所以你必须将变量回显到html中。此技术也可以与javascript一起使用。