2013-10-29 7 views
0

완벽하게 작동하는 연관 배열이 있습니다. 내가 겪고있는 문제는 이후에 나온다. 내가 때마다 위 각 콤보에 부여하는 것입니다 위해 찾고 있어요다차원 배열 루프에서 foreach 사용

$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); 
    } 

코드의 반은 여기에서 실패 :이 알아낼 코드를 많이 알고

-<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> 

:처럼 내가 좋아하는 것

$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);  
     } 
    } 
    } 
} 

결과가 보일 것입니다. 누군가가 도울 수 있기를 바랍니다. 나는 그것을 대단히 감사한다. 감사! :)

답변

0

나는 각각의 Multiple이 같은 조합이 될 것이라는 것을 알았으므로 3 번이나 끝내었다. 그래서 결국 쉽습니다. :)

관련 문제