【发布时间】:2015-01-28 21:24:12
【问题描述】:
假设我有:
$val = [1, 2, 3, 4, 5, 6, 7, 8];
$s = 3;
第 1 步:foreach $val 查找在其中找到 $s 的次数。这很简单
foreach($val as $c){
if($c > $s) {
$total = floor($c / $s);
$remainder = $c % $s;
} else {
$total = floor($s / $c);
$remainder = $s % $c;
}
}
第 2 步:构建一个将显示该内容的数组。例如:
// 3 doesn't go in 1
['segment' => 1]
// 3 doesn't go in 2
['segment' => 2]
// 3 goes once in 3
['segment' => 3]
// 3 goes once in 4 and reminder is 1
['segment' => 3]
['segment' => 1]
// 3 goes once in 5 and reminder is 2
['segment' => 3]
['segment' => 2]
// 3 goes twice in 6 and reminder is 0
['segment' => 3]
['segment' => 3]
// 3 goes twice in 7 and reminder is 1
['segment' => 3]
['segment' => 3]
['segment' => 1]
// 3 goes twice in 8 and reminder is 2
['segment' => 3]
['segment' => 3]
['segment' => 2]
等等
我正在尝试类似下面的代码,但无法让它工作:
foreach($val as $c){
if($c > $s) {
$total = floor($c / $s);
$remainder = $c % $s;
$segment = $s;
} else {
$total = floor($s / $c);
$remainder = $s % $c;
$segment = $c;
}
$totalLoop = $c > $s ? $total + $remainder : 1;
var_dump('total: ' . $total . ', reminder: ' . $remainder . ', segment : ' . $segment);
for($i = 1; $i <= $totalLoop; $i++) {
$segment= $c > $s && $totalLoop == $i ? $remainder : $segment;
var_dump('segment: ' . $segment);
}
}
有什么想法吗?
【问题讨论】:
-
你得到什么输出?或者什么没有按预期工作?
-
segments在第二个for loop中没有正确计算
标签: php arrays math foreach modulus