问题一参考答案:
有很多盒子和很多个球,盒子编号从 0 开始往后顺序递增,每个盒子都装一样数量的球。球在一个盒子里面装完,就装下一个盒子。球的编号按照盒子的编号顺序,也从 0 开始往后顺序递增。
/**
* [boxBall description]
* @param [type] $ballNum [球的数量]
* @param integer $boxBallNum [每个盒子里面装几个球,默认为:20]
* @param integer $box [盒子数量,默认从 0 开始]
* @return [type] [description]
*/
function boxBall($ballNum,$boxBallNum=20,$box=0){
//定义数组
$data = array();
//循环球数
for ($i=0; $i < $ballNum; $i++) {
//floor() 函数向下舍入为最接近的整数。
//floor($i / $boxBallNum) $i / $boxBallNum 取整,得出使用第几个盒子
$data[floor($i / $boxBallNum)] .= $i.',';
}
//将上面循环后的数组再次循环
for ($i=0; $i < count($data); $i++) {
//将每个盒子的球数值添加key值;每个盒子的key从0开始
//$data[$i]再次赋值回当前的盒子
$data[$i] = explode(',',rtrim($data[$i],','));
}
//将数组进行输出
return $data;
}
print_r(boxBall(52,10));
问题二参考答案:
如果每个盒子装 A 个球,在编号为 B 的盒子里面,第一个球的编号和最后一个球的编号用 A 和 B 表达出来。
//1.每个盒子装 A 个球;假设 A = 10;
//2.假设 B 的盒子为 2;
//取出 B 的第一个球和最后一个球
//假设有 3 个盒子,每个盒子里面都装有 A 个球
$data = array(
0 => array(0 => 0,1 => 1,2 => 2,3 => 3,4 => 4,5 => 5,6 => 6,7 => 7,8 => 8,9 => 9),
1 => array(0 => 10,1 => 11,2 => 12,3 => 13,4 => 14,5 => 15,6 => 16,7 => 17,8 => 18,9 => 19),
2 => array(0 => 20,1 => 21,2 => 22,3 => 23,4 => 24,5 => 25,6 => 26,7 => 27,8 => 28,9 => 29)
);
//current()函数返回数组中的当前元素的值。
print_r(current($data[2]));
echo '<br>';
//end()将内部指针指向数组中的最后一个元素,并输出。
print_r(end($data[2]));
问题三参考答案:
如果每个盒子装 A 个球,那么编号为 C 的球,它所在的盒子编号是什么,用 A 和 C 表达出来。
//1.每个盒子装 A 个球;假设 A = 10;
//2.假设编号 C 的球为 23
$a = 10;
$c = 23;
//用球的编号数除每个盒子装的球数,然后取整;得出编号C的球在哪个盒子
print_r(floor($c / $a));
以上的答案为参考答案,有更好的答案可以私信我喔!