我有一个关联的多维数组,如下所示

$data = array();

$data = Array (

[0] => Array ( [class] => 1styear [branch] => IT [Exam] => SEM1 [student name] => Alex [Bio] => Good Boy )

[1] => Array ( [class] => 2ndyear [branch] => Finance [Exam] => SEM1 [student name] => Mark [Bio] => Intelligent )

[2] => Array ( [class] => 2ndyear [branch] => IT [Exam] => SEM1 [student name] => Shaun [Bio] => Football Player )

[3] => Array ( [class] => 1styear [branch] => Finance [Exam] => SEM2 [student name] => Mike [Bio] => Sport Player )

[4] => Array ( [class] => 1styear [branch] => IT [Exam] => SEM2 [student name] => Martin [Bio] => Smart )

[5] => Array ( [class] => 1styear [branch] => IT [Exam] => SEM1 [student name] => Philip [Bio] => Programmer )

)

我需要根据上面数组中的类似元素创建新数组.意味着我必须创建阵列组.例如,类元素具有重复的第1年和第2年的值.所以它会产生一系列独特的元素.然后再次类是父数组和内部类数组应该有基于分支的数组和内部的检查数组和里面的数组应该有学生名和生物的关联数组.

所以基本上数组应该是这样的

array(

"1styear" => array(

"IT" => array(

"SEM1" => array(

array(

"student name" => "Alex",

"Bio" => "Good Boy"

),

array(

"student name" => "Philip",

"Bio" => "Programmer"

)

),

"SEM2" => array(

array(

"student name" => "Martin",

"Bio" => "Smart"

)

)

)

),

"2ndyear" => array(

"Finance" => array(

"SEM1" => array(

array(

"student name" => "Mark",

"Bio" => "Intelligent"

)

),

"SEM2" => array(

array(

"student name" => "Mike",

"Bio" => "Sport Player"

)

)

)

)

);

为了使基于类的组我喜欢下面哪个工作正常,但如何在其中创建数组

$classgroup = array();

foreach($data as $inarray){

$classgroup[$inarray['class']][] = $inarray;

}

$classarray = array();

foreach($classgroup as $key => $value){

echo $key; // output is 1styear and secondyear

create array like above

}

– – – – – – – – – – – – – – – – -编辑 – – – – – – – – ——————

从下面的循环

foreach($data as $array){

$grouped[$array["class"]][$array["branch"]][$array["Exam"]][]=array("student name"=>$array["student name"],"Bio"=>$array["Bio"]);

}

我得到了预期的o / p

但如果我需要另一个这样的o / p

预计o / p

array(

'1styear' =>

array (

0 =>

array(

'Exam' => 'SEM1',

'branch' =>

array (

0 => 'IT'

),

),

1 =>

array(

'Exam' => 'SEM2',

'branch' =>

array (

0 => 'IT'

),

),

),

'2ndyear' =>

array (

0 =>

array(

'Exam' => 'SEM1',

'branch' =>

array (

0 => 'Finance',

),

),

1 =>

array(

'Exam' => 'SEM2',

'branch' =>

array (

0 => 'Finance'

),

)

),

)

我尝试了循环但没有按预期获得o / p

foreach($data as $array){

$grouped[$array["class"]][]=array("Exam"=>$array["Exam"],"branch"=>$array["branch"]);

}

最佳答案 循环中的单行!

foreach($data as $array){

$grouped[$array["class"]][$array["branch"]][$array["Exam"]][]=array("student name"=>$array["student name"],"Bio"=>$array["Bio"]);

}

$groups产生:

Array(

[1styear] => Array(

[IT] => Array(

[SEM1] => array(

[0] => array(

[student name] => Alex,

[Bio] => Good Boy

),

[1] => array(

[student name] => Philip,

[Bio] => Programmer

)

),

[SEM2] => array(

[0] => array(

[student name] => Martin,

[Bio] => Smart

)

)

),

[Finance] => array(

[SEM2] => array(

[0] => array(

[student name] => Mike,

[Bio] => Sport Player

)

)

)

),

[2ndyear] => array(

[Finance] => array(

[SEM1] => array(

[0] => array(

[student name] => Mark,

[Bio] => Intelligent

)

)

),

[IT] => array(

[SEM1] => array(

[0] => array(

[student name] => Shaun,

[Bio] => Football Player

)

)

)

)

)

你的后续案例,更有趣/更具挑战性.我不得不把我不经常玩的一些功能搞得粉碎.看一下这个:

$data = array (

array ( "class"=>"1styear","branch"=>"IT","Exam"=>"SEM1","student name"=>"Alex","Bio"=>"Good Boy"),

array ( "class"=>"2ndyear","branch"=>"Finance","Exam"=>"SEM1","student name"=>"Mark","Bio"=>"Intelligent" ),

array ( "class"=>"2ndyear", "branch"=>"IT","Exam"=>"SEM1","student name"=>"Shaun","Bio"=>"Football Player" ),

array ( "class"=>"1styear","branch"=>"Finance","Exam"=>"SEM2","student name"=>"Mike","Bio"=>"Sport Player" ),

array ( "class"=>"1styear","branch"=>"IT","Exam"=>"SEM2","student name"=>"Martin","Bio"=>"Smart"),

array ( "class"=>"1styear","branch"=>"IT","Exam"=>"SEM1","student name"=>"Philip","Bio"=>"Programmer" )

);

$class_keys=array_unique(array_column($data,"class")); // create array of unique class values

$Exam_keys=array_unique(array_column($data,"Exam")); // create array of unique Exam values

foreach($class_keys as $class_key){

$i=0; // "class" subarray index

foreach($Exam_keys as $Exam_key){

$q=array("class"=>$class_key,"Exam"=>$Exam_key); // this array can have 1 or more pairs

// create an array only of rows where $q's key-value pairs exist

$qualifying_array=array_filter(

$data,

function($val)use($q){

if(count(array_intersect_assoc($val,$q))==count($q)){ // total pairs found = total pairs sought

return $val;

}

},

ARRAY_FILTER_USE_BOTH

);

foreach($qualifying_array as $qa){ // push appropriate values into array

$grouped2[$class_key][$i]["Exam"]=$qa["Exam"];

$grouped2[$class_key][$i]["branch"][]=$qa["branch"];

}

if(isset($grouped2[$class_key][$i]["branch"])){ // ensure no duplicate values in "branch" subarray

$grouped2[$class_key][$i]["branch"]=array_unique($grouped2[$class_key][$i]["branch"]);

}

++$i; // increment the index for each "class" subarray

}

}

echo "

";

print_r($grouped2);

echo "

";

输出与您请求的输出不同,但我认为您只是展示它应该是什么样子.如果这不太对,请告诉我.

array(

[1styear]=>array(

[0]=>array(

[Exam]=>SEM1

[branch]=>array(

[0]=>IT

)

),

[1]=>array(

[Exam]=>SEM2

[branch]=>array(

[0]=>Finance,

[1]=>IT

)

)

),

[2ndyear]=>array(

[0]=>array(

[Exam]=>SEM1

[branch]=>array(

[0]=>Finance,

[1]=>IT

)

)

)

)

for循环 php 增加数组维数_PHP数组在循环中创建多维数组相关推荐

  1. python构建二维数组_Python中创建二维数组

    二维数组 二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩阵称为方阵.对称矩阵a[i] ...

  2. python创建一个n*m的二维数组_Python中创建二维数组

    Python中创建二维数组 二维数组 二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩 ...

  3. Shell中创建序列和数组(list、array)的方法

    Shell中创建序列和数组(list.array)的方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-07-09 我要评论 这篇文章主要介绍了Shell中创建序列和数组(li ...

  4. C#_WPF中创建二维码、识别二维码

    C#_WPF中创建二维码.识别二维码 原文: C#_WPF中创建二维码.识别二维码 第三方库: WPFMediaKit.dll (WPFMediaKit摄像头处理) zing.dll NuGet安装这 ...

  5. java控件数组_在C# WinForm程序中创建控件数组及相应的事件处理

    控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现 ...

  6. 在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组

    在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组 摘要:本文介绍如何使用 Visual Basic® .NET 和 Visual C#™ .NET 创建和管理控 ...

  7. python生成一个数组_在for循环中创建多个数组(Python)

    我目前遇到Numpy阵列的问题.如果在其他地方已经提出这个问题,我道歉,但我觉得我到处都是. 我最初的问题是我试图创建一个数组并用多组不同大小的站数据填充它.由于我无法使用大小不同的数据集填充相同的数 ...

  8. C++中创建二维数组的四种方法

    目录 使用一维数组模型二维数组 静态二维数组 动态二维数组 利用vector创建二维数组 #include <iostream> #include <vector>using ...

  9. 快速提示:如何在JavaScript中创建和处理数组

    这篇文章由Chris Perry和Marcello La Rocca进行了同行评审. 感谢所有SitePoint的同行评审人员使SitePoint内容达到最佳状态! Array对象的length属性是 ...

  10. java画二维坐标_在图形界面中绘制二维的坐标系统

    在图形界面中绘制二维的坐标系统,其中x轴位于绘图区正中,y轴位于绘图区的最左边.实现以下基本功能: (1)设计界面接受用户输入的实验数据,同时绘制数据点,每个数据点用一个小圆号表示.最后,用直线或曲线 ...

最新文章

  1. c语言上机指导实验7,[C语言程序设计上机指导与同步训练(刘迎春张艳霞)]实验7.pdf...
  2. phpmyadmin 查看sql历史记录
  3. GDCM:gdcm::ByteSwap的测试程序
  4. 周学习进度----03
  5. Collat​​e SQL命令概述
  6. 使用eclipse启动服务时,程序的发布目录
  7. 一年工作经验的java面试题
  8. 实现一个串口调试工具
  9. The field file exceeds its maximum permitted size of 1048576 bytes.
  10. 教程丨键盘上的各按键的作用与常用办公快捷键大全
  11. 基于docker的test-containers环境百宝箱
  12. Largest Rectangle in a Histogram 题解 Python
  13. h3c虚拟服务器设置方法,h3c 设置虚拟服务器
  14. 了解电商行业项目背景
  15. Python 画沿着高对称性的能带图
  16. 有激励才有动力:从多多益善的华为年终奖谈起
  17. 南昌大学 计算机面试题,南昌大学计算机应用技术专业调剂生复试经验
  18. Unity AR开发之Vufoira基础配置
  19. Apache Flink 1.13.0 发布公告
  20. 怎么开放虚拟机端口,查找端口是否开放

热门文章

  1. 高通摄像头调试(OV8856)
  2. S11 Linux系统管理命令
  3. 1808: FJ的字符串
  4. 最新发布!《阿里云实时计算 Flink 版解决方案白皮书-2021版》开放下载
  5. 深度技术揭秘 | 大促狂欢背后,如何有效评估并规划数据库计算资源?
  6. 【图解机器学习】人人都能懂的算法原理
  7. 当数据库遇见FPGA:X-DB异构计算如何实现百万级TPS?
  8. 蒸发器分段设计matlab程序_制冷系统蒸发器过热度控制回路的MATLAB仿真_何煜
  9. 美术师关于自己的报酬与工作的看法
  10. HABBY CEO王嗣恩:这个下载量近20亿的爆款,曾被我推翻重做两次