Php 在数组中循环
我有以下名为$entries的数组:Php 在数组中循环,php,arrays,loops,nested-loops,Php,Arrays,Loops,Nested Loops,我有以下名为$entries的数组: array ( 0 => array ( 'entry_id' => 8132, 'racer_id' => 1302, 'class_id' => 20, ), 1 => array ( 'entry_id' => 8239, 'racer_id' => 851, 'class_id' => 20, ), 2 => array ( 'entry_id' => 8240, 'rac
array (
0 => array ( 'entry_id' => 8132, 'racer_id' => 1302, 'class_id' => 20, ),
1 => array ( 'entry_id' => 8239, 'racer_id' => 851, 'class_id' => 20, ),
2 => array ( 'entry_id' => 8240, 'racer_id' => 850, 'class_id' => 20, ),
3 => array ( 'entry_id' => 8241, 'racer_id' => 1222, 'class_id' => 20, ),
4 => array ( 'entry_id' => 8243, 'racer_id' => 1221, 'class_id' => 20, ),
5 => array ( 'entry_id' => 8250, 'racer_id' => 673, 'class_id' => 20, ),
6 => array ( 'entry_id' => 8255, 'racer_id' => 674, 'class_id' => 20, ),
7 => array ( 'entry_id' => 8258, 'racer_id' => 666, 'class_id' => 20, ),
8 => array ( 'entry_id' => 8266, 'racer_id' => 193, 'class_id' => 20, ),
)
这段代码将循环通过该数组
foreach ($entries as $entry) {
for ($i = 1; $i <= $list[0]['heat_count']; ++$i) {
if ($entry['class_id'] == $class) {
$heats[$class] = [
'heat_nbr' => $i,
'entry_id' => $entry['entry_id'],
'racer_name' => $f->getRacerFullName($entry['racer_id'])
];
}
}
}
您需要跟踪分配给预赛的参赛者数量,以便分配下一个预赛编号 像这样的方法应该会奏效:
$numberOfHeats = $list[0]['heat_count'];
$counter = 0;
foreach ($entries as $entry){
if($entry['class_id'] == $class) {
$nextHeatNumberToAssign = ($counter % $numberOfHeats) + 1;
$counter++;
$heats[$class][] = [
'heat_nbr' => $nextHeatNumberToAssign,
'entry_id' => $entry['entry_id'],
'racer_name' => $f->getRacerFullName($entry['racer_id'])
];
}
}
您需要跟踪分配给预赛的参赛者数量,以便分配下一个预赛编号 像这样的方法应该会奏效:
$numberOfHeats = $list[0]['heat_count'];
$counter = 0;
foreach ($entries as $entry){
if($entry['class_id'] == $class) {
$nextHeatNumberToAssign = ($counter % $numberOfHeats) + 1;
$counter++;
$heats[$class][] = [
'heat_nbr' => $nextHeatNumberToAssign,
'entry_id' => $entry['entry_id'],
'racer_name' => $f->getRacerFullName($entry['racer_id'])
];
}
}
所以你有一份参赛者名单,你想把他们分为不同的预赛?向我们展示一下
$list
的结构和你期望的结果应该是很好的。但一个简单的划分是不可能的。我需要根据报名情况将它们放在预赛中。第一次加热1,第二次加热2,依此类推。@olibiaz,$list的结构实际上与此循环无关。只需知道,该变量的值根据$entriesso的计数而变化。如果您有12名参赛者和3场预赛,您会希望他们像:[预赛1]>1,4,7,10[预赛2]>2,5,8,11[预赛3]>3,6,9,12那么你有一份参赛者名单,你正试图将他们分为不同的预赛?向我们展示$list
的结构和你期望的结果应该是很好的。但一个简单的划分是不可能的。我需要根据报名情况将它们放在预赛中。第一次加热1,第二次加热2,依此类推。@olibiaz,$list的结构实际上与此循环无关。只需知道,该变量的值根据$Entriess的计数而变化。因此,如果您有12名参赛者和3场预赛,您会希望他们被划分为:[预赛1]>1,4,7,10[预赛2]>2,5,8,11[预赛3]>3,6,9,12,效果完美。。在我设置$counter=1之后;在主回路之外,即。;)哦,太好了。。。很高兴听到。。!我在上面的代码中更新了它…-)我从计数器1开始,因为永远不会有热量0,然后将a+1添加到'heat_nbr'=>$nextHeatNumberToAssign的末尾,因为它没有正确递增。我在循环外将其设置为0,因为它在循环内做的第一件事是递增,所以第一件事将被分配值1。但是,现在看看它,我认为我们需要在$counter%$numberOfHeats之后添加一个“+1”代码>使其基于1而不是基于0。它工作得很好,但是,我注意到测试数据中的一个热竞争错误地增加了。它是从热度2开始的…效果很好。。在我设置$counter=1之后;在主回路之外,即。;)哦,太好了。。。很高兴听到。。!我在上面的代码中更新了它…-)我从计数器1开始,因为永远不会有热量0,然后将a+1添加到'heat_nbr'=>$nextHeatNumberToAssign的末尾,因为它没有正确递增。我在循环外将其设置为0,因为它在循环内做的第一件事是递增,所以第一件事将被分配值1。但是,现在看看它,我认为我们需要在$counter%$numberOfHeats之后添加一个“+1”代码>使其基于1而不是基于0。它工作得很好,但是,我注意到测试数据中的一个热竞争错误地增加了。它是从热2开始的。。。