如何在循环中有条件地执行数学运算?
How to conditionally perform math within a loop?
我想使用循环打印一系列有条件修改的数字。
逻辑是奇数出现不加修改打印,但偶数出现平方(乘以自己)。
for ($i=1; $i < 6 ; $i++) {
echo $i;
for ($j=1; $j==$i ; $j++) {
echo ($j+1) * ($j+1);
}
echo " ";
}
以上代码打印:14 2 3 4 5
.
我想要的结果(如果迭代 1
到 6
)是:
// unmodified
// ↓ ↓ ↓
1 4 3 16 5 36
// ↑ ↑↑ ↑↑
// squared (2, 4, and 6)
您需要从 1
开始,并在每次循环中添加 2
。偶数元素是该数字之后的数字的平方。所以:
for ($i = 1; $i < 6; $i += 2) {
echo $i . " " . (($i+1) * ($i+1)) . " ";
}
您不需要内部循环。
另一种方法是使用 %
<?php
$result = [];
for ($i=1; $i < 6 ; $i++) {
if($i%2==0){
$result[] = pow($i,2);
}else{
$result[] = $i;
}
}
echo implode(' ', $result);
?>
程序输出
1 4 3 16 5
<?php
for($i=1; $i<=6; $i++)
echo $i&1 ? $i : $i*$i , ' ';
因为你可以确定第n项,我们可以写一个函数来得到第n个数:
function ajeet_number($n) {
return $n&1 ? $n : $n*$n;
}
并在循环中使用它:
for($i=1; $i<=6; $i++)
echo ajeet_number($i) . ' ';
或将该函数应用于一系列数字:
$s = array_map('ajeet_number', range(1,6));
echo implode(' ', $s);
上面的每个输出都是相似的:
1 4 3 16 5 36
参考:Test if number is odd or even
我想使用循环打印一系列有条件修改的数字。
逻辑是奇数出现不加修改打印,但偶数出现平方(乘以自己)。
for ($i=1; $i < 6 ; $i++) {
echo $i;
for ($j=1; $j==$i ; $j++) {
echo ($j+1) * ($j+1);
}
echo " ";
}
以上代码打印:14 2 3 4 5
.
我想要的结果(如果迭代 1
到 6
)是:
// unmodified
// ↓ ↓ ↓
1 4 3 16 5 36
// ↑ ↑↑ ↑↑
// squared (2, 4, and 6)
您需要从 1
开始,并在每次循环中添加 2
。偶数元素是该数字之后的数字的平方。所以:
for ($i = 1; $i < 6; $i += 2) {
echo $i . " " . (($i+1) * ($i+1)) . " ";
}
您不需要内部循环。
另一种方法是使用 %
<?php
$result = [];
for ($i=1; $i < 6 ; $i++) {
if($i%2==0){
$result[] = pow($i,2);
}else{
$result[] = $i;
}
}
echo implode(' ', $result);
?>
程序输出
1 4 3 16 5
<?php
for($i=1; $i<=6; $i++)
echo $i&1 ? $i : $i*$i , ' ';
因为你可以确定第n项,我们可以写一个函数来得到第n个数:
function ajeet_number($n) {
return $n&1 ? $n : $n*$n;
}
并在循环中使用它:
for($i=1; $i<=6; $i++)
echo ajeet_number($i) . ' ';
或将该函数应用于一系列数字:
$s = array_map('ajeet_number', range(1,6));
echo implode(' ', $s);
上面的每个输出都是相似的:
1 4 3 16 5 36
参考:Test if number is odd or even