Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $x=$_POST[';某物';];_Php_Web - Fatal编程技术网

Php $x=$_POST[';某物';];

Php $x=$_POST[';某物';];,php,web,Php,Web,我有一个关于php的问题。我不知道该怎么解决它。当编写这样的代码时,$x=$\u POST['something']这是一个错误。当我写这样的代码时 if (isset($_POST['something'])) { $x = $_POST['something']; } 一切都很好。我不知道为什么?谁能给我解释一下哪种方法正确吗?抱歉,英语不好$\u POST['something']如果该变量未赋值(即没有值),则会给出一个错误isset()检查变量是否未赋值,如果是,则不会执行任

我有一个关于php的问题。我不知道该怎么解决它。当编写这样的代码时,
$x=$\u POST['something']这是一个错误。当我写这样的代码时

if (isset($_POST['something'])) {
  $x = $_POST['something'];
 } 

一切都很好。我不知道为什么?谁能给我解释一下哪种方法正确吗?抱歉,英语不好

$\u POST['something']
如果该变量未赋值(即没有值),则会给出一个错误
isset()
检查变量是否未赋值,如果是,则不会执行任何操作。因此,您得到的错误源于$\u POST superglobal中没有名为“something”的变量这一事实。问题是$\u POST['something']可能未设置,即该变量可能不存在(它是数组中的一个元素,因此可以以某种方式将其视为变量,为简单起见,即使这不是100%正确)

如果你加上这个条件

 if(isset($_POST['something']))

,则仅当设置了$\u POST['something']时才进行分配。所以,你确信你能完成这个任务。

好吧,这不是一个错误,只是一个通知。如果将“错误报告”设置为“全部”或类似,则会显示该对话框。它基本上告诉你变量还没有设置好,如果你有输入错误或其他什么的话,它会非常有用

您可以使用if(isset())东西,或者只告诉PHP您想通过使用@

$x = @$_POST['something'];

isset()
函数用于检查是否设置了变量。第二个版本在尝试使用变量之前检查变量是否已设置,这样就不会出现错误。然而,你可以用很少的研究努力找到这个问题的答案。在问之前请先回答。还要确保检查。您是否阅读了isset()的手册?该通知可能重复表明预期的输入变量不存在。用你的
如果
/
isset
包装你隐藏了那条信息;但是如果您尝试访问
$x
,以后将遇到相同的问题。因此,terneray probe
?:
和无提示替换赋值是常用的,或者在这种情况下使用
@
来保存日志条目。如果使用
@
@lonesomeday的理由不是
@
被认为非常慢的话,那就很少有了,而且容易掩盖您希望能够看到的错误消息。自PHP5.4以来,
@
在没有错误发生时对性能的影响几乎为零。在特定情况下(如可选属性、会话数据……数据通常存在,但可能丢失,而不是错误),可以极大地减少代码量。举个简单的例子,
$prop=isset($obj->prop)$obj->prop:null
$prop=@$obj->prop
的比较。谢谢大家的帮助。如果我想在标签中输入信息,这是最好的方法吗?if(isset($\u POST['something']){$x=$\u POST['something'];echo$x;}