2023年7月7日发(作者:)
for循环php增加数组维数_PHP数组在循环中创建多维数组我有⼀个关联的多维数组,如下所⽰$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 secondyearcreate array like above}– – – – – – – – – – – – – – – – -编辑 – – – – – – – – ——————从下⾯的循环foreach($data as $array){$grouped[$array["class"]][$array["branch"]][$array["Exam"]][]=array("student name"=>$array["studentname"],"Bio"=>$array["Bio"]);}我得到了预期的o / p但如果我需要另⼀个这样的o / p预计o / parray('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 / pforeach($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["studentname"],"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 valuesforeach($class_keys as $class_key){$i=0; // "class" subarray indexforeach($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 soughtreturn $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))))
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688703881a163854.html
评论列表(0条)