怎样把一个数组放入另一个数组的子数组里面?就像省市级那样?

这是楼层数组,1是1楼,2是2楼这是房间号数组,101,102对应第一个数组的一楼,以此类推
第一张图楼层数组,1是1楼,2是2楼,第二张是房间号数组,101,102对应第一个数组的一楼,201,202对应2楼
我想把房间号对应到第一个数组的楼层,1后面显示子类房间号101,102,2显示201,202,以此类推,怎么实现呢?求教大神

阅读 5.6k
3 个回答
$floor_list=array(
        array('floor_num'=>'1'),
        array('floor_num'=>'2'),
        array('floor_num'=>'3'),
        array('floor_num'=>'4')
    );

$room_list=array('101','102','103','104','201','202','203','204','301','302','303','304','401','402','403','404');

$room_datas=array();
foreach ($room_list as $k => $v) {
    $floor_num=substr($v, 0,1);
    $room_datas[$floor_num][]=$v;
}

foreach ($floor_list as $k => $v) {
    $floor_num=$v['floor_num'];
    $floor_list[$k]['rooms']=isset($room_datas[$floor_num])?$room_datas[$floor_num]:array();
}

print_r($floor_list);

/*
Array
(
    [0] => Array
        (
            [floor_num] => 1
            [rooms] => Array
                (
                    [0] => 101
                    [1] => 102
                    [2] => 103
                    [3] => 104
                )

        )

    [1] => Array
        (
            [floor_num] => 2
            [rooms] => Array
                (
                    [0] => 201
                    [1] => 202
                    [2] => 203
                    [3] => 204
                )

        )

    [2] => Array
        (
            [floor_num] => 3
            [rooms] => Array
                (
                    [0] => 301
                    [1] => 302
                    [2] => 303
                    [3] => 304
                )

        )

    [3] => Array
        (
            [floor_num] => 4
            [rooms] => Array
                (
                    [0] => 401
                    [1] => 402
                    [2] => 403
                    [3] => 404
                )

        )

)
 */

循环第一个楼层数组
里面循环 房间号数组
判断
当前的房号的开头是否是当前的楼层好 是的话push到当前数组中。。

不知道能不能解决到你的问题 我暂时就想到这里

我觉得最好是在添加房间号的时候选是几层的为好吧

//参数l_num:楼层数,r_num:房间数
function getlist(l_num, r_num){
  if(!l_num || !r_num || l_num ===0 || r_num ===0) return [];
  let sum = [];
  let floors = [];
  for(let floor=1;floor<l_num+1;floor++){
    let rooms = [];
    for(let room=1;room<r_num+1;room++){
      let prefix = '';
      if(room < 10){prefix = '0';}
      rooms.push(floor+prefix+room);
    }
    floors.push(rooms);
  }
  sum.push(floors);
  return sum;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题