0

我正在尝试将每一行的单元格 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);
4

3 回答 3

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
  }
}
于 2012-10-22T18:50:11.687 回答
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);
于 2012-10-22T18:51:30.810 回答
0

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

于 2012-10-22T18:55:10.767 回答