在多维数组循环中使用foreach

时间:2013-10-29 06:04:29

标签: php arrays multidimensional-array foreach

我有一个完美的关联数组。 我之后遇到的问题是。

阵列翻转后,$ combo看起来像:

$combo = array(0 => '2,4', 1 => '4,15', 2 => '2,15');

我正在寻找每次给上面的每个组合:2,4将有1.8的时间,4,15将有1.1的时间等等...

我得到的是在每个循环中重复完全相同的时间,并且每次重复获得第一名优胜者,即使它不包含在组合中。

$position = array('1', '2', '3', '4');
$jersey = array('2', '4', '15', '20');
$AssocArr = array_combine($position, $jersey);
$combo = array('1,2', '2,3', '1,3');
$time = array('1.8', '1.1', '1.8');


foreach ($headers as $header) {
  foreach ($time as $idx=>$ttext) {
  if($header[1] === 'Multiples') {
    foreach ($combo as &$value) {
      $values = explode(',', $value, 2);
      $comboGroups = array_intersect_key($AssocArr, array_flip($values));
      $value = join(',', $comboGroups);
    }

代码半部分从这里失败:

    $TimeEntities = false;
    foreach ($combo as $selGrp) {
      $xid = $selGrp;
      $sel = explode(',', $selGrp);
        foreach ($sel as $set=>$sel) {
          $set = 1;
          $sel = trim($sel);
            if (!empty($sel)){
              if (is_numeric($sel))
              $TimeEntities[$sel][$sel.';'.$set] = array('number' => $sel, 'order'=>$set);
            else
              $TimeEntities[$sel][$sel.';'.$set] = array('name' => $sel, 'order'=>$set);
            $set++; 
          }     
        } 
        $race['tracks'][$trackxid]['times']['final;' .$xid] = array('type'=>'final', $time'=>$ttext, 'combinations'=>$TimeEntities);       
      }
    }
  }
}

我希望看到的结果如下:

-<time xid="Multiples|final;2,4" type="final" time="1.8">
    -<combination xid="Multiples|final;2,4|2">
         <comboParticipant xid="Multiples|final;2,4|2|2;1" order="1" number="2"/>
     </combination>
    -<combination xid="Multiples|final;2,4|4">
         <comboParticipant xid="Multiples|final;2,4|4|4;1" order="1" number="4"/>
     </combination>
</time>
-<time xid="Multiples|final;1,15" type="final" time="1.1">
    -<combination xid="Multiples|final;1,15|1">
         <comboParticipant xid="Multiples|final;1,15|1|1;1" order="1" number="1"/>
     </combination>
    -<combination xid="Multiples|final;1,15|15">
         <comboParticipant xid="Multiples|final;1,15|15|15;1" order="1" number="15"/>
     </combination>
</time>
-<time xid="Multiples|final;2,15" type="final" time="1.8">
    -<combination xid="Multiples|final;2,15|2">
         <comboParticipant xid="Multiples|final;2,15|2|2;1" order="1" number="2"/>
     </combination>
    -<combination xid="Multiples|final;2,4|4">
         <comboParticipant xid="Multiples|final;2,15|15|15;1" order="1" number="15"/>
     </combination>
</time>

我知道这是很多代码要弄清楚的。我希望有人可以提供帮助。我非常感激。谢谢! :)

1 个答案:

答案 0 :(得分:0)

我最终做了三次,因为我知道每个Multi将是相同的组合。所以最终很容易。 :)