向PHP循环变量添加常量

时间:2013-09-05 07:19:31

标签: php

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

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

页面中显示的结果:

1
1
1
1
1

但如果没有添加1,结果是正确的。怎么做这个添加?

8 个答案:

答案 0 :(得分:1)

更改此行:

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

到此:

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

答案 1 :(得分:1)

将计算括在括号中:

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

答案 2 :(得分:1)

你在问题​​中连着使用这个:

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

答案 3 :(得分: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

但这只是愚蠢的,考虑到你实际上是在创建一个流,只是为了将你的子串/ int传递给,只是将结果字符串传递给输出流。您也可以直接将所有块传递给输出流:

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

输出相同。如果你正在考虑使用它:不要。这只是为了好玩,以及如何将压缩代码放得太过分的一个例子

答案 4 :(得分:0)

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

答案 5 :(得分:0)

你正在寻找这样的事情:

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

答案 6 :(得分:0)

就像DanFromGermany建议的那样,为什么不从$ i开始比现在高一个呢?

此外,如果你必须进行计算,var的含义通常与它的起点不同。因此,为了可读性和可重用性,请执行Munjal提出的建议,但忽略连接;

<?php

for ($i=0; $i<5; $i++) {
    $laterTime = $i + 1;
    echo "Time: {$laterTime} <br />\n";
}

?>

答案 7 :(得分:-1)

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

或者如果你坚持连接

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