向 PHP 循环变量添加常量


Adding constant to PHP loop variable

如何向PHP的循环变量添加一些东西并检查结果?我有这个简单的代码:

<?php
for ($i=0; $i<5; $i++) {
    echo "Time: " . $i + 1 . "<br/>";
}
?>

页面中显示的结果:

1
1
1
1
1

但是,如果没有加法 1,则结果是正确的。如何进行此添加?

你在问题中使用这个连接:

<?php
for ($i=0; $i<5; $i++) {
    echo "Time: " . ($i + 1) . "<br/>";
}
?>

更改此行:

echo "Time: " . $i + 1 . "<br/>";

对此:

echo "Time: " . ($i + 1) . "<br/>";

将计算放在括号中:

<?php
for ($i=0; $i<5; $i++) {
    echo "Time: " . ($i + 1) . "<br/>";
}
?>

虽然添加括号以使添加具有更高的优先级是一种选择,但最简单的方法是将$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

输出是相同的。如果您正在考虑使用它:不要。这只是为了好玩,也是一个例子,说明如何将压缩代码做得有点过分

<?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/>";
}
?>