0

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

数组翻转后,$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>

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

4

1 回答 1

0

我最终做了三遍,因为我知道每个倍数都是相同的组合。所以最后很容易。:)

于 2013-11-05T03:46:59.103 回答