javascript与php一维数组与二维数组互转
admin
2023-06-13 09:02:50
0

一、php:

  1. 一维转二维:
    a. 代码:
    /*
    @desc:一维数组转二维数组
    @param data 需要转换的数组
    @param key 主键
    @return ret 转换后的数组
    */
    function onetomore($data,$key){
    $ret = array();
    foreach($data as $v){
        $arr = array();
        foreach($v as $k1=>$v1){
            if($k1 != $key){
                $arr[$k1] = $v1;
            }
        }
        $ret[$v[$key]][] = $arr;
    }
    return $ret;
    }

    b. 测试:

    $data = array(
    array(
        'user_id' => 1,
        'role_id' => 1,
        'user_nick' => 'a'
    ),
    array(
        'user_id' => 2,
        'role_id' => 1,
        'user_nick' => 'b'
    ),
    array(
        'user_id' => 3,
        'role_id' => 2,
        'user_nick' => 'c'
    )
    );
    $ret = onetomore($data,'role_id');
    var_dump($ret);

    c. 输出:

    array(2) {
    [1]=>
    array(2) {
    [0]=>
    array(2) {
      ["user_id"]=>
      int(1)
      ["user_nick"]=>
      string(1) "a"
    }
    [1]=>
    array(2) {
      ["user_id"]=>
      int(2)
      ["user_nick"]=>
      string(1) "b"
    }
    }
    [2]=>
    array(1) {
    [0]=>
    array(2) {
      ["user_id"]=>
      int(3)
      ["user_nick"]=>
      string(1) "c"
    }
    }
    }
  2. 二维转一维:
    a. 代码:
    /*
    @desc:二维数组转一维数组
    @param data 需要转换的数组
    @param key 主键
    @return ret 转换后的数组
    */
    function moretoone($data,$key){
    $ret = array();
    $count = 0;
    foreach($data as $k=>$v){
        foreach($v as $v1){
            $ret[$count] = $v1;
            $ret[$count][$key] = $k;
            $count ++;
        }
    }
    return $ret;
    }

    b. 测试:

    $data = array(
    1 => array(
        array(
            "user_id" => 1,
            "user_nick" => 'a'
        ),
        array(
            "user_id" => 2,
            "user_nick" => 'b'
        )
    ),
    2 => array(
        array(
            "user_id" => 3,
            "user_nick" => 'c'
        )
    )
    );
    $ret = moretoone($data,'role_id');
    var_dump($ret);

    c. 输出:

    array(3) {
    [0]=>
    array(3) {
    ["user_id"]=>
    int(1)
    ["user_nick"]=>
    string(1) "a"
    ["role_id"]=>
    int(1)
    }
    [1]=>
    array(3) {
    ["user_id"]=>
    int(2)
    ["user_nick"]=>
    string(1) "b"
    ["role_id"]=>
    int(1)
    }
    [2]=>
    array(3) {
    ["user_id"]=>
    int(3)
    ["user_nick"]=>
    string(1) "c"
    ["role_id"]=>
    int(2)
    }
    }

    二、javascript:

  3. 一维转二维:
    a. 代码:
    /*
    @desc:一维数组转二维数组
    @param data 需要转换的数组
    @param key 主键
    @return ret 转换后的数组
    */
    function onetomore(data,key){
    var ret = {}
    for(var i in data){
        ret[data[i][key]] = new Array()
    }
    for(var i in data){
        var arr = {}
        for(var j in data[i]){
            if(j != key){
                arr[j] = data[i][j]
            }
        }
        ret[data[i][key]].push(arr)
    }
    return ret
    }

    b. 测试:

    var data = new Array(
        {
            'uesr_id':1,
            'role_id':1,
            'user_nick':'a'
        },
        {
            'uesr_id':2,
            'role_id':1,
            'user_nick':'b'
        },
        {
            'uesr_id':3,
            'role_id':2,
            'user_nick':'c'
        }
    )
    var ret = onetomore(data,'role_id')
    console.log(ret)

    c. 输出:

    { '1': 
    [ { uesr_id: 1, user_nick: 'a' },
     { uesr_id: 2, user_nick: 'b' } ],
    '2': [ { uesr_id: 3, user_nick: 'c' } ] }
  4. 二维转一维:
    a. 代码:
    /*
    @desc:二维数组转一维数组
    @param data 需要转换的数组
    @param key 主键
    @return ret 转换后的数组
    */
    function moretoone(data,key){
    var ret = new Array()
    var count = 0
    for(var i in data){
        ret[count] = {}
        for(var j in data[i]){
            ret[count] = data[i][j]
            ret[count][key] = i
            count ++
        }
    }
    return ret
    }

    b. 测试:

    var data = {
    1:new Array(
            {
                'user_id':1,
                'user_nick':'a'
            },
            {
                'user_id':2,
                'user_nick':'b'
            }
        ),
    2:new Array(
            {
                'user_id':3,
                'user_nick':'c'
            }
        )
    }
    var ret = moretoone(data,'role_id')
    console.log(ret)

    c. 输出:

    [ { user_id: 1, user_nick: 'a', role_id: '1' },
    { user_id: 2, user_nick: 'b', role_id: '1' },
    { user_id: 3, user_nick: 'c', role_id: '2' } ]

相关内容

热门资讯

王毅会见巴军方高层,谈及伊朗局... 据凤凰卫视报道,中共中央政治局委员、外交部长王毅5月25日在人民大会堂会见巴基斯坦国防军司令兼陆军参...
何妨把课堂打造成学术“直播间” 评论员说 何妨把课堂打造成学术“直播间” ■ 本报评论员 刘晓庆 其实,不只是大学课堂越来越“静悄悄...
空间站完成第8次“太空会师” 5月25日在北京航天飞行控制中心飞控大厅拍摄的神舟二十一号航天员乘组和神舟二十三号航天员乘组拍摄“全...
美军称在伊朗南部实施自卫打击 央视记者获悉,美国中央司令部发言人蒂姆·霍金斯上尉表示,美军25日在伊朗南部实施了自卫打击,“旨在保...
小米押注!闪回科技四次递表港交... 【大河财立方消息】5月25日,闪回科技有限公司(以下简称闪回科技)在港交所提交上市申请,独家保荐人为...
神舟二十三号飞船发射任务圆满成... 乘组一名航天员将开展一年期在轨驻留试验 神舟二十三号飞船发射任务圆满成功 北京时间5月24日23时0...
西安警方:女孩与父亲争执被路人... 5月25日凌晨,针对网传“16岁女孩被陌生男子殴打”一事,西安市公安局莲湖分局发布警情通报。据江西广...
力鼎光电获得外观设计专利授权:... 证券之星消息,根据天眼查APP数据显示力鼎光电(605118)新获得一项外观设计专利授权,专利名为“...
“一箭8星”再启新程!中科宇航... IT之家 5 月 25 日消息,中科宇航今日宣布,近日,力箭一号遥十四运载火箭在中科宇航产业化基地如...
鄠图科普丨一起“趣”阅读|火箭... 火箭发射是太空旅行的开始, 也是人类探索宇宙的重要一步。 火箭是载人和无人航天器进入太空的必备工具,...