遍历数组
Looping Througn an Array
我有以下名为 $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, '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'])
];
}
}
}
我没有得到我需要的输出。变量 $list[0]['heat_count'] 来自较早的查询,该查询计算 "heat".
中的乘客数量
我需要的是根据 "heat_count" 设置 "heat_number",所以如果有 2 次加热,我需要遍历 $entries 数组并取第 1 次加热 1 和第二个加热 2,依此类推。如果 "heat_count" 是 3,那么 1st 到 1,2nd 到 2,3rd 到 3,4th 到 1,5th 到 2,6th 到 3..等等。
在 1 到 50 的事件中,每个 class 可以有任意数量的加热。如果没有一百万个 if 语句,那么硬编码是不可能的。
任何人都可以理解我在这里得到的东西并把我推向正确的方向吗?
这是我现在从上面的循环中得到的:
array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8132) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8239) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8240) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8241) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8243) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8250) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8255) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8258) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8266) }
您需要跟踪分配给预赛的参赛者人数,以便分配下一个预赛号码。
像这样的东西应该可以工作:
$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'])
];
}
}
我有以下名为 $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, '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'])
];
}
}
}
我没有得到我需要的输出。变量 $list[0]['heat_count'] 来自较早的查询,该查询计算 "heat".
中的乘客数量我需要的是根据 "heat_count" 设置 "heat_number",所以如果有 2 次加热,我需要遍历 $entries 数组并取第 1 次加热 1 和第二个加热 2,依此类推。如果 "heat_count" 是 3,那么 1st 到 1,2nd 到 2,3rd 到 3,4th 到 1,5th 到 2,6th 到 3..等等。
在 1 到 50 的事件中,每个 class 可以有任意数量的加热。如果没有一百万个 if 语句,那么硬编码是不可能的。
任何人都可以理解我在这里得到的东西并把我推向正确的方向吗?
这是我现在从上面的循环中得到的:
array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8132) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8239) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8240) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8241) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8243) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8250) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8255) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8258) } array(2) { ["heat_nbr"]=> int(2) ["entry_id"]=> int(8266) }
您需要跟踪分配给预赛的参赛者人数,以便分配下一个预赛号码。
像这样的东西应该可以工作:
$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'])
];
}
}