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を終了するように、whileループで$ iをインクリメントするべきではありませんか?この場合、おそらくforループの方がwhileループよりも適切です。

于 2012-10-22T18:55:10.767 に答える