PHP不会在循环时退出

时间:2012-10-22 18:48:49

标签: php

我正在尝试将每行的单元格0与浏览器语言返回的字符串进行比较。防爆。浏览器语言是“en”匹配第3行的“en”。$ row_num = 3.我的页面未加载,这使我相信while语句是无限循环的。

PHP

$i = 0;
    while ($i <= mysql_num_rows($lang_head_foot)-1) {
      if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == mysql_result($lang_head_foot, $i, 0)) {
      $row_num = $i;
    }
}
setcookie('dbs_lang', $row_num, time() + 60*60*24*365*10);

3 个答案:

答案 0 :(得分:6)

您需要增加循环计数器:

$i = 0;
while ($i <= mysql_num_rows($lang_head_foot)-1) {
  if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == mysql_result($lang_head_foot, $i, 0)) {
      $row_num = $i++; // <-- increment loop counter
  }
}

答案 1 :(得分:3)

改为使用for循环:

for($i=0; $i <= mysql_num_rows($lang_head_foot)-1; $i++) {
    if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == mysql_result($lang_head_foot, $i, 0))
    {
      $row_num = $i;
    }
}
setcookie('dbs_lang', $row_num, time() + 60*60*24*365*10);

答案 2 :(得分:0)

你不应该在while循环中递增$ i,以便在检查完所有行后退出吗?在这种情况下,也许for循环比while循环更好。