如何二维数组按种类循环成三维数组

array(

"id"=>1,

"name"=>"mi5",

"pp"=>"xiaomi",

),

array(

"id"=>2,

"name"=>"ip5",

"pp"=>"apple",

),

array(

"id"=>3,

"name"=>"mi6",

"pp"=>"xiaomi",

),

array(

"id"=>4,

"name"=>"ip6",

"pp"=>"apple",

),

);

以上数组 看的出 每个2维里的一维数组下标 pp’  都是有分类的现象

所以要把它分离

$arr1=array();

foreach ($arr as  $v) {

$v1=$v[‘pp‘];

unset($v[‘pp‘]);

$arr1[$v1][]=$v;

}

var_dump($arr1);

先定义一个空数组  然后循环二维数组 把一维数组的pp下标的值  转化成新数组的下标

把一维数组 按照pp下标分类存储在一个新数组里

这就成功分类啦

时间: 2024-12-28 11:51:11

如何二维数组按种类循环成三维数组的相关文章

ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

"索引超出了数组界限"也有可能确实是因为你选择的二维码Version对应的容量不足以存储你所放的内容,如果你确定使用的版本容量二维码能存储你的内容,但还是报错,那么再考虑此解决方法 这两天忙着做一个客户标签打印程序,因为二维码里面存在控制符,使用ZPL指令存在一些问题,因此决定使用生成二维码图片然后转换成ZPL格式图片来打印.途中找了很多类库,很多都无法自定义QR的version而放弃,转而找到ThoughtWorks.QRCode.dll,效果很满意,但是测试的时候发现经常会提示&q

创建二维数组(一维长度3,二维长度6),值为一维数组和二维数组索引值的积,

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>二维数组</title><script type="text/javascript">var myarr = new Array(); for (var i = 1

用一层for循环初始化三维数组

int a[3][4][5]; for (int i = 0; i < 3 * 4 * 5; i++) { a[i / 20][(i / 5) % 4][i % 5] = i; printf("%-2d,%-2d,%-6d", i / 20, (i / 5) % 4, i % 5); // printf("%-12d", i); if ((i + 1) % 5 == 0) { printf("\n"); } } int a[5][4][3]

C++二维数组动态内存分配

对于二维数组和二维指针的内存的分配 这里首选说一下一维指针和一维数组的内存分配情况. 一维: 数组:形如int  a[5];这里定义了一个一维数组a,并且数组的元素个数是5,这里的a是这五个元素的整体表示,也就是通过a我们能找到这五个元素.注意:a是代表数组第一个元素的首地址.&a是代表数组的地址,虽然它们的值相同. 指针: int *p = NULL:这里p是一个指针,它指向的是计算 机内一块存储int类型的内存.P = a;就是让p等于刚才申请的数组的第一个元素的地址.所以通过p我们也能找到

hdu1081 DP类最长子段和(二维压缩+前缀和数组/树状数组计数)

题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j)与(i,j - 1), dp 值代表以该点为右下角的最大矩阵和,同时记录下这个矩阵的左上角坐标,状态转移时通过将原和最大矩阵通过补边推到当前和最大矩阵.但是其实这种做法有一个明显的问题,就是转移时,补上边后 dp 值相同怎么办,dp 值相同而矩阵不同的话会影响到下一次状态转移后补上的矩阵的情况,从而

C语言 二维数组复制、清零及打印显示

#include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 void printarr2d(int (*a)[3],int row,int col) { int i,j; for(i=0; i<row; i++) { for(j=0; j<col; j++) { printf("%d ", a[i][j]); } printf("\n"

[C++]二维数组还是一维数组?

记得刚学习C++那会这个问题曾困扰过我,后来慢慢形成了不管什么时候都用一维数组的习惯,再后来知道了在一维数组中提出首列元素地址进行二维调用的办法.可从来没有细想过这个问题,最近自己写了点代码测试下,虽然还是有些不明就里,不过结果挺有意思. 为了避免编译器优化过度,用的是写操作,int,测试分为不同大小的空间,同样大小空间不同的行和列数.分别记录逐行写入,逐列写入,按间隔写入,空间申请和释放的时间. 测试代码 一维数组的申请和释放 1 // Create 2 int *m = new int[n_

7.29 二维数组 malloc 外挂 实现库函数

数组与指针 : 数组在传递参数里,作用一样:  array 都是一个指针,接收数组的首地址 (int array[],int n  ) ( int * array,   int n   ) 指针和数组可以等价转换 array[i]     =========  *(array+i) 二维数组传参 : (int a[][],  int R , int C)  //错误 横坐标可以不写,列坐标必须要写. (int a[][6],  int R , int C) #include <stdio.h>

一维数组复习,二维数组与多维数组

输入班级人数,输入每个人的分数,求班级最高分,最低分,以及去掉两个最高分并且去掉两个最低分之后的所有人员的平均分. 输入班级人数,输入一个人名,输入一个分数.求班级最高分是多少,是谁的分数(注意姓名跟分数对应) 运用两个一维数组: 运用一个一维数组: 一个元素是一个点,一维数组是一条线,二维数组是一个面,三维数组是一个立体. 二维数组: int [,]array=new int[3,2]{ {1,2}, {2,3}, {3,4} }; 其中3表示有三个一维数组,2表示每个一维数组中有两个元素.