我想使用循环打印一系列条件修改的数字。
逻辑是,奇数出现未经修改就被打印,而偶数出现则被平方(乘以它们本身)。
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)
答案 0 :(得分:2)
您需要从1
开始,并在循环中每次添加2
。偶数元素是该数字后面的数字的平方。所以:
for ($i = 1; $i < 6; $i += 2) {
echo $i . " " . (($i+1) * ($i+1)) . " ";
}
您不需要内部循环。
答案 1 :(得分: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
答案 2 :(得分:1)
<?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