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;
我是编程新手,正在尝试学习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;