for循环 php 增加数组维数_PHP数组在循环中创建多维数组
我有一個(gè)關(guān)聯(lián)的多維數(shù)組,如下所示
$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 )
)
我需要根據(jù)上面數(shù)組中的類似元素創(chuàng)建新數(shù)組.意味著我必須創(chuàng)建陣列組.例如,類元素具有重復(fù)的第1年和第2年的值.所以它會(huì)產(chǎn)生一系列獨(dú)特的元素.然后再次類是父數(shù)組和內(nèi)部類數(shù)組應(yīng)該有基于分支的數(shù)組和內(nèi)部的檢查數(shù)組和里面的數(shù)組應(yīng)該有學(xué)生名和生物的關(guān)聯(lián)數(shù)組.
所以基本上數(shù)組應(yīng)該是這樣的
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"
)
)
)
)
);
為了使基于類的組我喜歡下面哪個(gè)工作正常,但如何在其中創(chuàng)建數(shù)組
$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
}
– – – – – – – – – – – – – – – – -編輯 – – – – – – – – ——————
從下面的循環(huán)
foreach($data as $array){
$grouped[$array["class"]][$array["branch"]][$array["Exam"]][]=array("student name"=>$array["student name"],"Bio"=>$array["Bio"]);
}
我得到了預(yù)期的o / p
但如果我需要另一個(gè)這樣的o / p
預(yù)計(jì)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'
),
)
),
)
我嘗試了循環(huán)但沒有按預(yù)期獲得o / p
foreach($data as $array){
$grouped[$array["class"]][]=array("Exam"=>$array["Exam"],"branch"=>$array["branch"]);
}
最佳答案 循環(huán)中的單行!
foreach($data as $array){
$grouped[$array["class"]][$array["branch"]][$array["Exam"]][]=array("student name"=>$array["student name"],"Bio"=>$array["Bio"]);
}
$groups產(chǎn)生:
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
)
)
)
)
)
你的后續(xù)案例,更有趣/更具挑戰(zhàn)性.我不得不把我不經(jīng)常玩的一些功能搞得粉碎.看一下這個(gè):
$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 "
";輸出與您請(qǐng)求的輸出不同,但我認(rèn)為您只是展示它應(yīng)該是什么樣子.如果這不太對(duì),請(qǐng)告訴我.
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
)
)
)
)
總結(jié)
以上是生活随笔為你收集整理的for循环 php 增加数组维数_PHP数组在循环中创建多维数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos系统中mysql密码_Cen
- 下一篇: php实现按时间排序_按时间排序的问题?