0

好的,所以我正在尝试从其他人的代码中自学 php;一些代码可能已经过时了,但在我有时间去上学之前,它可以用来完成基本操作。我的问题是未定义变量错误。目前我能找到的关于这个主题的只是如何隐藏错误,但我不想隐藏;如果它是隐藏的,这并不意味着问题已经解决,这意味着您已经找到了一种忽略它的方法,我认为这是一个很大的问题。它给你错误是有原因的。

我收到错误的那一行。

<form method=post
      <?php echo "action=\"registration.php?f=".(!$flag)."&amp;s=".$sort."\""; ?> 
      enctype="multipart/form-data" >

然后这是页面上的问题。

Notice: Undefined variable: flag in C:\wamp\www\info\registration.php on line 236

还有其他相同的,但我觉得如果我可以在这里学习如何解决这个问题,它也将成为其他人的解决方案。如果您需要任何额外的信息,请告诉我。提前致谢。抱歉这么挑剔;我只是不想忽视那些试图在我面前传播的问题。

4

3 回答 3

3

阅读别人的代码来学习是一件好事——我希望更多的人会这样做;)

PHP 是一种“脚本语言”。与 C#、C++ 或 Java 等更多“强类型”语言不同,“脚本语言”几乎可以让您随时随地开始使用变量。

它很方便,很灵活……但是如果在变量初始化之前就 开始使用它可能会导致问题。

于 2012-05-19T16:45:33.163 回答
3

要回答您的问题 - 找出$flag在这种情况下应该表示什么,并相应地进行设置。它看起来像一个布尔值,所以它可能就像$flag = true;在表单渲染之前使用一样简单。但同样,如果你复制了这个,你可能不需要它——也许你可以从你的代码中删除它?

现在我推荐一个风格约定。在您的示例中,您正在回显标签的action属性form- 如果该属性依赖于变量并且可能不会被使用,我只会这样做。

我认为这样做更清洁:

<form method="post"
      action="registration.php?f=<?php echo !$flag ?>&amp;s=<?php echo $sort ?>"
      enctype="multipart/form-data"
>

您会注意到我已经将标签包裹在几行中。同样,这是可选的,但可以进行完全有效的标记,并有助于避免编辑器中的水平滚动。此外,您可以更轻松地查看每个属性的开始位置,因为每个属性都有自己的行。

于 2012-05-19T16:53:47.810 回答
1

您正在引用尚未设置的变量(在本例中$flag)。

基本上$flag还没有分配给它的值,所以不存在。在您提供的代码段$flag设置之前,您的代码中是否有任何地方?

于 2012-05-19T16:45:46.947 回答