PHP:为什么前 3 个数组值一遍又一遍地打印出来?

PHP: Why are the first 3 array values printed over and over?

我是编程新手,正在尝试学习PHP以及PHP和HTML之间的代码分离。

我想用数组 ($list) 中的值替换 HTML 文件 ($replacehtml) 中的某些单词。 HTML 文件包含一个 table 行,其中包含 3 个要替换的值($ip、$date、$browser)。我想多次打印同一行(每次都使用数组中的新值),直到打印完数组中的所有值。但是我的代码似乎一遍又一遍地打印前 3 个值,我不确定为什么。我确定我错过了一些东西,希望得到一些帮助。

$list = array('ip1', 'date1', 'browser1','ip2','date2','browser2');

$n = 0;
   for ($i=0 ; $i < count($list)-1 ; $i++){

       if($n > count($list)-1){
           break;
       }
        $replacehtml = str_replace($ip, $list[$n], $replacehtml);
        $n++;
        $replacehtml = str_replace($date, $list[$n], $replacehtml);
        $n++;
        $replacehtml = str_replace($browser, $list[$n], $replacehtml);
        $n++;
        echo $replacehtml;
    }

我得到以下输出:

ip1 date1   browser1
ip1 date1   browser1

本来应该是:

ip1 date1   browser1
ip2 date2   browser2

为什么你定义了变量$i却从不使用它?然后通过递增变量 $n 而不是使用有用的内置函数来复制 for 循环的功能。

为了实现您想要的输出,我将使用以下更简单的代码:

$list = array('ip1', 'date1', 'browser1','ip2','date2','browser2');


for ($i = 0; $i < count($list); $i += 3){

  $replacehtml = str_replace($ip, $list[$i], $replacehtml);
  $replacehtml = str_replace($date, $list[$i + 1], $replacehtml);
  $replacehtml = str_replace($browser, $list[$i + 2], $replacehtml);

  echo $replacehtml;

}

这应该会达到您的预期输出。

除了重复循环之外,主要问题在于将要替换的原始字符串覆盖为...

$replacehtml = str_replace($ip, $list[$n], $replacehtml);

所以第二次循环时,$replacehtml 已经替换了所有值。

只需使用不同的变量将值放入和后续替换...

$newhtml = str_replace($ip, $list[$n], $replacehtml);

然后

$newhtml = str_replace($date, $list[$n], $newhtml);

等最后

echo $newhtml;