javascript与php一维数组与二维数组互转

一、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‘ } ]

原文地址:http://blog.51cto.com/12173069/2133493

时间: 2024-10-11 11:47:31

javascript与php一维数组与二维数组互转的相关文章

JavaScript - 一维数组、二维数组基础

<html> <head> <head> <body> <script language="javascript"> // 数组 var arr = ["wjp", 520, 'wcc', 13.14] ; for(var i=0; i<arr.length; i++){ alert(arr[i]); } // 数组为空undefined var arr2 = ["wjp",,51

java数组(一维数组,二维数组)

数组初始化: 1,动态初始化:数组定义与为数组分配空间和赋值的操作分开进行 2,静态初始化:在定义数组的同时就为数组元素分配空间并赋值 3,默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此,数组分配空间之后 每个元素也被按照成员的规则被隐士的初始化值 ------------------------------------------------. 一维数组: package day06; import java.util.Date; /*** * 数组演示 * 数组的声明: * t

C#一维数组,二维数组,多维数组

所谓的数组,就是相同数据类型的元素的元素按一定顺数排列的集合,就是把有限个类型相同的变量用一名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号称为下标.组成数组的各个变量成为数组的分量,也称为数组的元素,有时也称为下标变量,数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的集合成为数组. 数组又分为一维数组,二维数组,多维数组 一维数组用一个整数来索引,多维数组用两个或多个整数来索引. 一.数据类型[] 变量名

16.10.20 4th 1蛤蟆爬井 2一维数组 3二维数组

摘要 1蛤蟆爬井 2一维数组 3二维数组 例子 井深10米, 蛤蟆白天爬5m,晚上落4米,求几天爬出来. //思路,用循环语句来做,for因为是未知次数所以排除,while 先判断后运行排除, dowhile,先爬在判断所以可以 int gaodu = 0; int tianshu = 0; boolean tianse = true; do{ if(tainse){ //白天爬5米 gaodu+=5; //爬完后改黑天 tianse = false; //天数+1 tianshu +=1; }

一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int *p = a; p < a + 10;p++)  //指针类型决定4个字节 { printf("\n%p,%d", p, *p); } getchar(); } 指针数组 #inclu

C# 数组、一维数组、二维数组、多维数组、锯齿数组

C#  数组.一维数组.二维数组.多维数组.锯齿数组 一.数组: 如果需要使用同一类型的对象,就可以使用数组,数组是一种数据结构,它可以包含同一类型的多个元素.它的长度是固定的,如长度未知的情况下,请使用集合. 二.一维数组: 声明及初始化: class Program { static void Main(string[] args) { //方法一 int[] num = new int[3];//声明一个长度为3的值类型的数组: num[0] = 3;//为数组赋值: num[1] = 5

java基础中的一维数组和二维数组

1.数组:具有相同数据类型的一组数据的集合. 一维数组 2.创建一维数组 a.数组作为对象允许使用new关键字进行内存分配,使用数组之前,必须首先定义数组变量所属类型,即声明数组.  声明数组: 语法:数组元素类型   数组名字[]; 数组元素类型[]  数组名字: 注释:数组元素类型:决定了数组的数据类型,包括基本数据类型和费基本数据类型. 数组名字:为一个合法的标识符,自己去定义 []:指明该变量是一个数组类型变量,单个"[]"表示要创建的是一维数组. 例如:int arr[];

7、一维数组和二维数组耳朵创建,输出,Arrays.fill()替换

package com.xxx.xxx; import java.util.Arrays; public class demo8 { /** * 1.初始化一维数组 使用一维数组 * 2.初始化二维数组 使用二维数组 * 3.填充替换数组元素 * @param args */ public static void main(String[] args) { //1.第一种初始化方式 int arr[] = new int[]{1,2,3,4,5,6}; //一维数组 //1.1.第二种初始化方式

一维数组与二维数组的拼接与二维数组增加行

一维数组与二维数组的拼接 numpy有很多的拼接函数.比如hstack和vstack等.网上又很多这样的总结帖子.但是两个数组能拼接的条件就是得满足两个数组的维度要相同.所以二维数组和一维数组拼接的时候需要使用newaxis将一维数组转化为二维数组,也就是shape从(3,)转化为(3,1). a = np.array([1,2,3]); b = np.array([[1],[2],[3]]); #将一维数组a转化为二维数组 a = a[:,np.newaxis]; c = np.concate