可以这样做吗? (这是我的代码)
for ($i = 0 ; $i <= 10 ; $i++){
for ($j = 10 ; $j >= 0 ; $j--){
echo "Var " . $i . " is " . $k . "<br>";
}
}
我想要这样的事情:
var 0是10
var 1是9
var 2是8 ...
但我的代码错了,它给出了一个巨大的列表。 Php guru,帮帮我!!
答案 0 :(得分:62)
试试这个:
for ($i=0, $k=10; $i<=10 ; $i++, $k--) {
echo "Var " . $i . " is " . $k . "<br>";
}
两个变量$i
和$k
分别使用0
和10
进行初始化。在每个循环结束时,$i
将递增一($i++
)并且$k
递减一($k--
)。因此$i
的值为0,1,...,10和$k
的值为10,9,...,0。
答案 1 :(得分:2)
您还可以为第二个变量添加条件
for ($i=0, $k=10; $i<=10, $k>=0 ; $i++, $k--) {
echo "Var " . $i . " is " . $k . "<br>";
}
答案 2 :(得分:1)
你不应该使用两个for循环来实现你想要实现的目标,因为你总共循环了121次(11x11)。你真正想要的只是在循环之外声明一个跟踪j的计数器,然后在循环内减少j。
编辑:感谢Gumbo为我提供包容。
答案 3 :(得分:1)
如果您的代码看起来像是两个运行相反方向的值,则可以简单地减去:
echo "Var " . $i . " is " . 10 - $i . "<br>";
但我猜这不是你想要的吗?另外,请注意建议的comma operator。虽然它是一件好事,它可以在其他语言如C and C++中引起顽皮的副作用,因为PHP以不同的方式实现它。
答案 4 :(得分:0)
要扩展其他(正确)答案,您所做的事情称为嵌套循环。这意味着对于外循环(第一个)的每次迭代,您都在完成整个内循环。这意味着您可以获得11 + 11 + 11 + ... = 11 * 11
个输出
答案 5 :(得分:0)
array_map(function($i) {
echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL;
}, range(1,10));
答案 6 :(得分:0)
我尝试在数据库中获取开始和结束时间并存储,给定开始和结束时间,每次使用两个变量i&amp; j
循环 $start = "09:00";
$end = "18:00";
$strEnTim = strtotime("10.00");
$slotStart = strtotime($start);
$slotEnd = strtotime($end);
$slotNow = $slotStart;
for( $i=$slotStart, $j=$strEnTim; $i, $j<=$slotEnd; $i+=3600, $j+=3600)
{
if(( $i < $slotNow) && ( $j < $strEnTim)) continue;
Slot::create([
'start_time' => date("H:i",$i),
'end_time' => date("H:i", $j)
]);
}