Php 为什么在使用前检查值是否存在是一种很好的编程实践?

Php 为什么在使用前检查值是否存在是一种很好的编程实践?,php,Php,假设使用isset()函数,在将ID分配给变量或在下面的代码中的某个位置使用它之前,我们检查了ID是否存在或用户是否提交了ID <?php if(isset($_GET['Id'])) { $Id=$_GET['Id']; } ?> 现在我明白了,这样做很好 1) 因此,代码按照预期的行为执行,即完成预期的任务。例如,如果要在某个查询中使用id,该查询将基于该id返回一行,那么最好提供一个有效的id,以确保查询确实返回一行

假设使用isset()函数,在将ID分配给变量或在下面的代码中的某个位置使用它之前,我们检查了ID是否存在或用户是否提交了ID

     <?php

        if(isset($_GET['Id']))
    {

     $Id=$_GET['Id'];
    }
?>

现在我明白了,这样做很好

1) 因此,代码按照预期的行为执行,即完成预期的任务。例如,如果要在某个查询中使用id,该查询将基于该id返回一行,那么最好提供一个有效的id,以确保查询确实返回一行作为结果。。。这避免了在未提供有效id的情况下查询失败的意外行为

2) 同样显而易见的是,最大限度地减少代码可能产生的任何运行时错误

因此,我正在寻找更多相关的示例和上下文,以解释为什么这始终是一个好的编程实践


基本上更多的例子来帮助我理解为什么这样做真的很好。。。非常感谢。

想想未来吧

如果您只是简单地声明了
$id=$\u GET['id']
并在以后使用了该变量,那么您的应用程序可能会以意外的方式运行

假设下周您回来编写一些代码,使用方便的
$id
变量。通过浏览文件,您可以看到它在其他地方使用,并且不打算不设置它。当您快速测试代码时,该代码可以工作,但在实际使用中失败。也许它会出错,也许它会弹出一个管理页面,也许它会爆炸并杀死小狗,谁知道呢

如果你更仔细一点,做了如下事情:

$id = 0; //default document
if (isset($_GET['id'])
{
  $id = $_GET['id'];
}
您的代码总是有一个
$id
可以使用。注意这里的一个小增加,在我将它的值赋给另一个变量之前,我并没有简单地确保
$\u GET['id']
存在,我已经确保
$id
/始终/有一个值


如果我再聪明一盎司,我可能会做类似的事情:
If(isset($\u GET['id']&&ctype_digit($\u GET['id'])和&isValidId($\u GET['id']))

-+1很好的答案…如果能看到更多的例子/答案,这些例子/答案将迫使某人理解并帮助他成为一名更好的程序员,那将是非常好的,如果只有解决这个问题的聪明人会允许…:)注意,这只在你有合理默认的情况下才有用。在许多情况下,与有效但并非真正有效的值相比,完全没有值更好。(在这种情况下,你可以使用
null
做同样的事情,但这违背了这个答案的全部推理。)解决这个问题的聪明人不喜欢帮助别人强化概念,成为更好的程序员……:)a) 你的代码有错误,b)你在问题中给了自己答案,这使得整个问题有点奇怪a)是的,错误,因为我只是输入了一些快速代码,但我不认为这妨碍了任何人理解问题的全部内容。。。b) 是的,我回答了我自己,但我正在寻求对我的理解的认可和/或进一步的纠正/改进。看看普莱因海默给出的答案,它不仅帮助我巩固了我的理解,而且还通过向我证明了一种使之更完善的方法来改进我的理解。。。在stackoverflow上获得编写好代码的帮助不是目的吗?你的问题中没有足够的问题。。。它就在边缘,但并不完全在那里。