php根据数组值生成序列

时间:2017-03-27 12:22:01

标签: php arrays sequence

我想要这个数组

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

试试这个:

$pax = [];
$seq = 1;

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

有两个循环:第一个循环乘客,第二个循环为每个(某种?)乘客创建所需数量的元素。

答案 1 :(得分:0)

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