在代码时调试简单的php

时间:2009-09-27 21:27:59

标签: php debugging

我收到此错误:“致命错误:无法在第18行的D:\ Programas \ wamp \ www \ away \ index.php中的写入上下文中使用函数返回值”。第18行是if语句。

任何人都可以帮我解决这个问题吗?感谢。

$vars = array("first_date_month", "first_date_day", "last_date_month", "last_date_day", "resume_date_month", "resume_date_day", "pay_date_month", "pay_date_day", "pay_time_hour", "pay_time_minutes");

$err_flag = false;
$i = 0;
while ($i < count($vars) and $err_flag == false)
{
    if ( (!isset($_GET($vars[$i])) or ($_GET[$vars[$i] == "0") )
        $err_flag = true;
    $i++;  
}

5 个答案:

答案 0 :(得分:8)

也许我看不太清楚,但是:

if((!isset($ _ GET($ vars [$ i]))或($ _GET [$ vars [$ i] ==“0”))

你有一个非常糟糕的括号和方括号混合。

没有这样的东西
$_GET() 

你必须纠正错误。

答案 1 :(得分:4)

你的代码很乱。

$ _ GET是一个关联数组而不是函数(您使用的函数调用语法将$ vars [$ i]作为参数传递)。在第二个$ _GET中,有一个]缺失。

第18行应该是:

if ( (!isset($_GET[$vars[$i]]) or ($_GET[$vars[$i]] == "0") )

答案 2 :(得分:2)

我对它的看法:

$vars = array("first_date_month", "first_date_day", "last_date_month", "last_date_day", "resume_date_month", "resume_date_day", "pay_date_month", "pay_date_day", "pay_time_hour", "pay_time_minutes");

foreach ($vars as $var) {
  if ($err_flag = empty($_GET[$var]))
    break;
}

8)

我认为标记的答案已经......很好..回答了代码中的问题,所以只是抛出一些优化:

  • 使用foreach()而不是while / for 在很多情况下我们很简单 只是迭代一个数组 - 如果需要,我们可以得到值和密钥。
  • 使用empty()函数(对任何null,false,0,“”,“0”返回true)
  • 完成使用break
  • 后退出循环

答案 3 :(得分:0)

$_GET是一个变量,一个数组 - 而不是一个函数。

这意味着您必须使用[]的数组访问来获取它包含的数据。

所以:

$_GET[$vars[$i]]

而不是

$_GET($vars[$i])

你第一次使用$ _GET。


并且,第二次,你忘了关闭一个];这意味着您需要使用:

$_GET[$vars[$i]]

而不是

$_GET[$vars[$i]


最后,while循环应该如下所示:

while ($i < count($vars) and $err_flag == false)
{
    if ( !isset($_GET[$vars[$i]]) or $_GET[$vars[$i]] == "0" ) {
        $err_flag = true;
    }
    $i++;  
}

注意我还在if条件的主体周围添加了{};这样,如果你不得不添加一些东西,你就不会忘记忘记那些; - )

答案 4 :(得分:0)

将第18行if...更改为:

if ( (!isset($vars[$i])) or ($vars[$i] == "0") )
    $err_flag = true;
$i++;

这主要是因为我 - 这纯粹是个人的,我怀疑 - 不喜欢在整个剧本中使用$_GET[...];分配:

$variable_from_GET[] = $_GET['variable_name'];

然后在您所使用的条件中使用$variable_from_GET数组变量,因为您有一个$vars数组,所以