Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:为什么要反复打印前3个数组值?_Php_Arrays_For Loop_Indexing_Echo - Fatal编程技术网

PHP:为什么要反复打印前3个数组值?

PHP:为什么要反复打印前3个数组值?,php,arrays,for-loop,indexing,echo,Php,Arrays,For Loop,Indexing,Echo,我是编程新手,尝试学习PHP以及PHP和HTML之间的代码分离 我想用数组($list)中的值替换HTML文件($replacethtml)中的某些单词。HTML文件由一个表行组成,其中有3个要替换的值($ip、$date、$browser)。我想打印同一行几次(每次都使用数组中的新值),直到打印完数组中的所有值。但我的代码似乎反复打印前3个值,我不知道为什么。我肯定我错过了一些东西,希望能得到一些帮助 $list = array('ip1', 'date1', 'browser1','ip2'

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

我想用数组($list)中的值替换HTML文件($replacethtml)中的某些单词。HTML文件由一个表行组成,其中有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
ip2 date2   browser2

为什么定义变量
$i
,但从不使用它?然后通过增加变量
$n
而不是使用有用的内置函数来复制
for
循环的函数

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

$list=array('ip1','date1','browser1','ip2','date2','browser2');
对于($i=0;$i

这应该可以实现您的预期输出。

除了重复循环外,主要的问题是覆盖要替换到的原始字符串

$replacehtml = str_replace($ip, $list[$n], $replacehtml);
因此,第二次循环时,
$replacethtml
已经替换了所有值

只需使用另一个变量将值放入其中,然后进行后续替换

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

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

echo $newhtml;

此代码段不完整,请提供其他信息,如
$ip
和其他变量谢谢,因为我还是新手,我一定错过了此信息。我尝试使用$I,但无法使其工作,因此我认为需要一个额外的变量。您的建议+下面的评论使我的程序工作,因为下面提到的覆盖仍然发生在这里。
echo $newhtml;