这怎么可能是有效的PHP代码?如何避免这种情况?

这怎么可能是有效的PHP代码?如何避免这种情况?,php,conditional-statements,Php,Conditional Statements,我今天查看了项目范围内的错误日志,发现了大量的此类通知: “未定义索引:第3行/myScript.php中的myVar” 我花了很长时间才找到错误。这里,它被压缩成4行代码(最初它比这多一点)我只是没有看到分号 if (isset($_POST['myVar'])); { echo $_POST['myVar']; } 在其他容易出错的情况下,我有自己的方法。就像在这个例子中,我错误地使用“=”而不是“=”: 那么,在上面的示例中,我可以做得更好,不让分号事件发生吗?回答您的直接问题,

我今天查看了项目范围内的错误日志,发现了大量的此类通知:

“未定义索引:第3行/myScript.php中的myVar”

我花了很长时间才找到错误。这里,它被压缩成4行代码(最初它比这多一点)我只是没有看到分号

if (isset($_POST['myVar']));
{
    echo $_POST['myVar'];
}
在其他容易出错的情况下,我有自己的方法。就像在这个例子中,我错误地使用“=”而不是“=”:


那么,在上面的示例中,我可以做得更好,不让分号事件发生吗?

回答您的直接问题,这是一个使用IDE提供更好提示的问题,或者简单地进行更好的调试,这样就不会花费您太多时间。您还可以打开错误消息,以便立即得到错误,而不必检查日志

error_reporting(E_ALL);
然后使用错误消息提示帮助隔离问题。它说错误在第3行,
myVar
是未定义的,因此您应该真正关注第3行或它前面的内容,并查看使用未定义变量的原因


我猜在这种情况下,您会更快地注意到分号。

您可以改进您的编码风格

PSR-2样式不允许在使用IF时将花括号放在新行上,它们必须与IF在同一行上,用空格分隔

if (isset($_POST['myVar'])); {
    echo $_POST['myVar'];
}
这看起来比你的代码更可疑。仍然有足够多的字符使搜索眼睛感到困惑,但通常不希望IF语句的括号和大括号之间出现分号

编码风格就是让错误看起来像错误,并且突出。虽然这一个确实是有效的语法,但它看起来很奇怪,足以发现错误,因为分号位于一行的末尾


如果你自动格式化你的代码,你会得到你原来的代码,让你想知道为什么花括号会出现在下一行…

“这怎么可能是有效的PHP代码?”这不是,也不是。如果($myVar=5){}使用2x
=
-“那么,在上面的示例中,我能做得更好,不让分号的事情发生吗?”按照设想的方式进行;不要试图重新发明轮子。你要做的是专注于手头的任务,在编码时要真诚。:-pUse格式化工具(例如来自Netbeans)另外,如果你想了解“如何抛出错误”,请将错误报告添加到文件的顶部
错误报告(E_ALL);ini设置(“显示错误”,1)如果错误报告在默认情况下没有打开。好吧,现在这是我第一次读到一个令人信服的论点为什么要使用PSR-2:-),我仍然不会,因为我的整个项目(几年来唯一一个项目)在括号前使用了新行。但如果从一开始我就相信。此外,thanx还支持在查找错误时自动格式化代码的想法。这是调试的一半,但仍然是一个有效的答案(正如我所要求的调试前部分)。塔克斯!
if (isset($_POST['myVar'])); {
    echo $_POST['myVar'];
}