Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数组中循环_Php_Arrays_Loops_Nested Loops - Fatal编程技术网

Php 在数组中循环

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

我有以下名为$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'])
           ];
       }
    }
}

您需要跟踪分配给预赛的参赛者数量,以便分配下一个预赛编号

像这样的方法应该会奏效:

$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开始的。。。