对于php版本<5.3.0,转到相当于?

Nev*_*sed -1 php goto

我需要在我的代码中使用goto运算符,因为我似乎无法想到解决它的方法.但问题是我的主机只安装了PHP版本5.2.17.

有任何想法吗?

以下是我的代码:

if ($ready !=="y")
{
    $check=mysql_query("SELECT `inserted` FROM `team`");
    $numrows  = mysql_num_rows($check);  

    $i="0";

    while ($i<$numrows && $row = mysql_fetch_assoc($check))
    {

        $array[$i] = $row['inserted'];
        $i++;

    }
    if (in_array("n", $array)) 
    {

        goto skip;

    }
    else
    {
        mysql_query("

            UPDATE game SET ready='y'

        ");
    }

}

skip:
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 8

您的代码中有一些反模式.我们来清理吧.我会解释一下这里有什么变化.

if($ready !== "y") {
    $sth = mysql_query("SELECT inserted FROM team WHERE inserted = 'n'");
    if(mysql_num_rows($sth) > 0) {
        mysql_query("UPDATE game SET ready = 'y'");
    }
}
Run Code Online (Sandbox Code Playgroud)

首先要做的事情是:不需要执行查询,获取所有结果,然后遍历这些结果(in_array)查找特定值.让数据库通过仅查找inserted字符串文字的行来为您执行此操作"n".

因为我们知道我们只"n"收回记录,所以我们只需检查是否有任何结果.如果是,请运行查询.如果没有"n"记录,UPDATE则不运行.

如果你需要知道UPDATErun,请为它添加一个检查:

$ran_update = false;
if($ready !== "y") {
    $sth = mysql_query("SELECT inserted FROM team WHERE inserted = 'n'");
    if(mysql_num_rows($sth) > 0) {
        mysql_query("UPDATE game SET ready = 'y'");
        $ran_update = true;
    }
}
if($ran_update) {
// ...
}
Run Code Online (Sandbox Code Playgroud)