2017-03-27 108 views
0

我想這個數組PHP的基於陣列的價值

$passengers = array(
      'adult' => 2, 
      'child' => 1, 
      'infant' => 1 
     ); 

改變這樣生成的序列。根據人數創建一個序列。

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++; 
} 
} 

有兩個週期:第一個週期的乘客,第二個創建你需要爲每一個(種?)乘客儘可能多的元素。

+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

雖然這段代碼片段是受歡迎的,並且可能會提供一些幫助,如果它包含* how *的解釋(// meta.stackexchange.com/q/114762) *爲什麼*這解決了這個問題。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –