如何向 PHP 的循环变量添加内容并检查结果?我有这个简单的代码:
<?php
for ($i=0; $i<5; $i++) {
echo "Time: " . $i + 1 . "<br/>";
}
?>
页面中显示的结果:
1
1
1
1
1
但是如果没有加1,结果是正确的。这个加法怎么做?
如何向 PHP 的循环变量添加内容并检查结果?我有这个简单的代码:
<?php
for ($i=0; $i<5; $i++) {
echo "Time: " . $i + 1 . "<br/>";
}
?>
页面中显示的结果:
1
1
1
1
1
但是如果没有加1,结果是正确的。这个加法怎么做?
虽然添加括号以赋予加法更高的优先级是一种选择,但最简单的方法是$i + 1
转换为表达式,解析为奇异值,然后echo
使用逗号将其传递给 :
for ($i=0; $i<5; $i++)
{
echo "Time: " , $i + 1 , "<br/>";
}
但写这个的最短方法是:
for ($i=0;$i<5;)//don't increment here
{
echo 'Time: ', ++$i, '<br/>';//increment here, and make sure to pre-increment
}
或者,更具可读性(恕我直言,因此更好):
for($i=1;$i<6;$i++)
{//start with one, so you needn't increment in the loop body!
echo 'Time: ', $i, '<br/>';
}
省略连接稍微快一点,但你几乎不会注意到这一点。这只是一个替代方案。把这两个选项想象成这样(如果你熟悉 C++):
int i = 0;
std::stringstream toPrint;//create string-stream
toPrint << "Time: " << ++i << "<br/>";//pass substrings/int chunks to stream
std::COUT << toPrint.str();//create single string, and pass to output-stream
但这很愚蠢,考虑到您实际上是在创建一个流,只是将您的子字符串/整数传递给,只是将结果字符串传递给输出流。您不妨将所有块直接传递给输出流:
std::<COUT << "Time: " << ++i << "<br/>"; //pass string, int and string to output
将echo
其视为一种语言结构(它是),它是您对流的访问点STDOUT
。手动连接字符串时,您可以按原样将其传递给流吗?没有任何开销?
顺便说一句,您只需 2 行代码即可获得所需的输出,而无需(显式)循环和递增变量:
$vals = range(1,5);//create array 1, 2,3, 4, 5
//repeat format Time: %d<br/> for every index in $vals
vprintf(str_repeat('Time: %d <br/>', count($vals)), $vals);
//pass resulting format to vprintf, allong with the array of values
输出是一样的。如果你正在考虑使用这个:不要。这只是为了好玩,以及如何将压缩代码做得有点过头的示例
更改此行:
echo "Time: " . $i + 1 . "<br/>";
对此:
echo "Time: " . ($i + 1) . "<br/>";
将计算放在括号中:
<?php
for ($i=0; $i<5; $i++) {
echo "Time: " . ($i + 1) . "<br/>";
}
?>
你在你的问题中使用这个:
<?php
for ($i=0; $i<5; $i++) {
echo "Time: " . ($i + 1) . "<br/>";
}
?>
<?php
for ($i=1; $i <= 5; $i++) {
echo "Time: " . ($i) . "<br />";
}
你正在寻找做这样的事情:
<?php
for ($i=0; $i<5; $i++) {
$j=$i+1;
echo "Time: " . $j . "<br/>";
}
?>
就像 DanFromGermany 建议的那样,为什么不从 $i 比现在高一开始呢?
此外,如果您必须进行计算,则 var 的含义通常与其起点不同。因此,为了可读性和可重用性,请按照 Munjal 的建议进行,但忽略连接;
<?php
for ($i=0; $i<5; $i++) {
$laterTime = $i + 1;
echo "Time: {$laterTime} <br />\n";
}
?>
<?php
for ($i=0; $i<5; $i++) {
$i++;
echo "Time: ".$i. "<br/>";
}
?>
或者如果你坚持串联
<?php
for ($i=0; $i<5; $i++) {
echo "Time: " .++$i. "<br/>";
}
?>