2017-03-27 10 views
0

에 기초하여 시퀀스를 생성한다. 사람 수에 따라 시퀀스를 만듭니다.

Array(
[adult] => Array(
     [0] => 1 
     [1] => 2 
    ) 

[child] => Array(
     [0] => 3 
    ) 

[infant] => Array(
     [0] => 4 
    ) 

)

나는 모든 지원이 높게 평가되어이 코드

 $seq=1; 
     foreach($passengers as $paxKey => $paxVal){ 

      if($paxVal>1){ 
       $pax[$paxKey][] = $seq; 
       $seq = $seq+$paxVal; 
      }else{ 
       $seq=$paxVal+$seq; 
       $pax[$paxKey][] = $seq; 
      } 
     } 

와 붙어있어.

+0

정확하게 만들고 싶습니다. 세부 사항을 정확하게 제공 할 수 있습니까? 위의 배열에서 아래의 배열까지 또는 아래의 배열에서 위까지? – jilesh

+0

그리고 어디서 붙어 있니? 나는이 배열 변환이 전혀 유용하지 않다는 것을 매우 의심한다. 그러나 이것은 당신의 자아로 모두 해결할 수 있어야합니다. 힌트 : for-loop ... –

답변

1

이 시도 :

$pax = []; 
$seq = 1; 

foreach($passengers as $key => $val){ 
    while($val--) { 
    $pax[$key][] = $seq; 
    $seq++; 
} 
} 

는 2 사이클이 있습니다 : 첫 번째 사이클 승객, 두 번째는 승객 각 (?의 종류)에 필요한만큼의 요소를 작성합니다.

+1

'$ pax'의 사용법은 무엇입니까? – JustBaron

+0

내 오류, 복사/붙여 넣기 오류. 이제 정확해야합니다 :) –

0
$result = []; 
$counter = 1; 
foreach($passengers as $key=>$value) 
{ 
    for($i=0;$i<$value;$i++) 
    { 
     $result[$key][] = $counter; 
     $counter++; 
    } 
} 
print_r($result); 
+0

이 코드 단편은 환영하며 도움을 줄 수도 있지만 설명이 포함 된 경우 크게 개선 될 것입니다 (// meta.stackexchange.com/q/114762) * how * 그리고 * 왜 * 이것이 문제를 해결합니다. 지금 묻는 사람뿐만 아니라 앞으로 독자에게 질문에 답하고 있다는 것을 기억하십시오! 설명을 추가하려면 답을 편집하고 어떤 제한 및 가정이 적용되는지 표시하십시오. –