PHP为什么要使用;“回声”;行动中

PHP为什么要使用;“回声”;行动中,php,forms,echo,Php,Forms,Echo,是否有任何特殊原因使用此选项: <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> $\u服务器[“PHP\u SELF”]是一个超全局函数,返回当前运行脚本的名称。因此,如果该表单位于index.php上,php服务器将回显index.php 关于何时使用echo,确实没有规则。只有在阵列上才能使用它。如果试图在数组中使用它,它将返回对象而不是字符串。对于

是否有任何特殊原因使用此选项:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
$\u服务器[“PHP\u SELF”]
是一个超全局函数,返回当前运行脚本的名称。因此,如果该表单位于index.php上,php服务器将回显
index.php


关于何时使用
echo
,确实没有规则。只有在阵列上才能使用它。如果试图在数组中使用它,它将返回对象而不是字符串。对于一个数组,您可以在它中迭代打印每个对象,
var\u dump(array)
,或者
print array[0]
,如果它是一个字典
print array['key']
,php需要记住的最重要的一点是,在所有处理完成之后,它所做的就是向浏览器发送一个普通的html文件

$\u服务器['PHP\u SELF']属于当前正在执行的文档/路径。例如,index.php。使用echo只是将该路径打印到表单的action属性中,这意味着表单将提交到index.php。

不建议使用
$\u服务器['php\u SELF']
,应该避免使用它。@CharlotteDunois为什么?使用htmlspecialchars()是否可以避免这些问题?这并不完全正确,因为只能使用
print\r()
来播种数组。如果要对数组使用echo,则会出现错误。@SuperDJ这是错误的,如果变量是数组,则会出现
array
。但是
$\u SERVER['PHP\u SELF']
是一个字符串。@SuperDJ,将其更改为添加您不能打印数组。但是我真的需要操作上的“echo”吗,因为全局变量将获得运行脚本的名称,这就是我所需要的,不需要打印它还是我真的需要“打印”值,我测试了它,它在没有回声的情况下工作,或者可能是我做错了什么。@FraK不,没有回声也能工作。它在没有回显的情况下工作的原因是:
提交到当前页面。例如,如果您的页面名为index.php,则执行
这是我找到的最佳答案。谢谢你的简明解释!