while循环和if - 只执行一次

时间:2016-08-19 20:31:17

标签: php if-statement

我有以下代码:

Map<String, Object> domainMap = new HashMap<String, Object>();
try {
    responseJson = getFile("reviewresponse.json");
    //responseJson = new String(Files.readAllBytes(Paths.get("reviewresponse.json")), StandardCharsets.UTF_8);
    ObjectMapper jsonObjectMapper = new ObjectMapper();
    jsonObjectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
    domainMap = jsonObjectMapper.readValue(responseJson,
                   new TypeReference<Map<String, Object>>() {});
} 

我想执行函数dodaj();只有一次,不是几次。怎么做?请帮忙,非常感谢。 问候。

2 个答案:

答案 0 :(得分:2)

如果您调用dodaj,请使用变量记住。

$called_dodaj = false;
while($row = mysql_fetch_assoc($result))
{
    if(strtolower($message) == $row['question'])
    {
        msg($row['answer']);
        update($row['question']);
    } elseif (!$called_dodaj) {
        dodaj(strtolower($message), '', 0);
        $called_dodaj = true;
    }
}

答案 1 :(得分:0)

使用break声明:

while($row = mysql_fetch_assoc($result))
{
    if(strtolower($message) == $row['question'])
    {
        msg($row['answer']);
        update($row['question']);
    } else {
        dodaj(strtolower($message), '', 0);
        break;
    }
}

编辑:我假设您打算在调用dodaj()后停止处理结果。但是,如果您只想调用dodaj()一次,请使用标志变量:

$dodajCalled = false;
while($row = mysql_fetch_assoc($result))
{
    if(strtolower($message) == $row['question'])
    {
        msg($row['answer']);
        update($row['question']);
    } elseif (!$dodajCalled) {
        dodaj(strtolower($message), '', 0);
        $dodajCalled = true;
    }
}