我正在编写此代码以分发给定号码。没有给客人和孩子。有以下条件的房间:
代码:
$adults = 5;
$childs = 4;
$rooms = 3;
$dist = distGuests($adults, $childs, $rooms);
function distGuests($adults, $childs, $rooms) {
$dist = array();
$i = 0;
$j = 1;
for ($i = 0; $i < $rooms;) {
if ($adults) {
$dist['adults'][$i] += $j;
$adults--;
}
if ($childs) {
echo 'Hi!<br>';
$dist['childs'][$i] += $j;
} else {
echo 'Bye!<br>';
}
$childs--;
if (($dist['adults'][$i] + $dist['childs'][$i]) == 4) {
$i++;
}
}
return $dist;
}
这应该打印如下:
Array
(
[adults] => Array
(
[0] => 2
[1] => 2
[2] => 1
)
[childs] => Array
(
[0] => 2
[1] => 2
)
)
但它打印如下,即$ child变为0时代码执行不停止:
Array
(
[adults] => Array
(
[0] => 2
[1] => 2
[2] => 1
)
[childs] => Array
(
[0] => 2
[1] => 2
[2] => 3
)
)
请告诉我这里缺少什么?
谢谢,
答案 0 :(得分:2)
你应该移动
$childs--;
以下
$dist['childs'][$i] += $j;
因此它在if语句中并且不总是被调用(这使得它的值低于0)
在for循环结束时添加:
if(!($adults) and !($childs) ){
break;
}