【发布时间】:2020-01-09 10:17:09
【问题描述】:
这是我的第一个数组
$array1 = Array
(
[0] => Array
(
[class] => Nursery
[subjects] => Array
(
[0] => dance
[1] => Drawing
[2] => English
[3] => Hindi
[4] => Maths
[5] => Painting
[6] => Reading & Writing
)
)
[1] => Array
(
[class] => Kg
[subjects] => Array
(
[0] => Drawing
[1] => English
[2] => Hindi
[3] => Painting
[4] => Personality Development
)
)
[2] => Array
(
[class] => 1st
[subjects] => Array
(
[0] => Art & Craft
[1] => Computer
[2] => Drawing
[3] => English
[4] => Environmental Education
[5] => French
[6] => hand writing
[7] => Hindi
[8] => Maths
[9] => Moral Teaching
[10] => music
[11] => Painting
[12] => Spoken English
)
)
);
第二个数组是
$array2 = Array
(
[0] => Array
(
[class] => Kg
[subjects] => Array
(
[0] => English
[1] => Hindi
)
)
[1] => Array
(
[class] => 1st
[subjects] => Array
(
[0] => English
[1] => Environmental Education
[2] => French
)
)
);
我想要的输出如下所示
$output = Array
(
[0] => Array
(
[classname] => Nursery
[ischeck] => No
[subs] => Array
(
[0] => Array
(
[subjects] => dance
[ischeck] => No
)
[1] => Array
(
[subjects] => Drawing
[ischeck] => No
)
[2] => Array
(
[subjects] => English
[ischeck] => No
)
[3] => Array
(
[subjects] => Hindi
[ischeck] => No
)
[4] => Array
(
[subjects] => Maths
[ischeck] => No
)
[5] => Array
(
[subjects] => Painting
[ischeck] => No
)
[6] => Array
(
[subjects] => Reading & Writing
[ischeck] => No
)
)
)
[1] => Array
(
[classname] => Kg
[ischeck] => Yes
[subs] => Array
(
[0] => Array
(
[subjects] => Drawing
[ischeck] => No
)
[1] => Array
(
[subjects] => English
[ischeck] => Yes
)
[2] => Array
(
[subjects] => Hindi
[ischeck] => Yes
)
[3] => Array
(
[subjects] => Painting
[ischeck] => No
)
[4] => Array
(
[subjects] => Personality Development
[ischeck] => No
)
)
)
[2] => Array
(
[classname] => 1st
[ischeck] => Yes
[subs] => Array
(
[0] => Array
(
[subjects] => Art & Craft
[ischeck] => No
)
[1] => Array
(
[subjects] => Computer
[ischeck] => No
)
[2] => Array
(
[subjects] => Drawing
[ischeck] => No
)
[3] => Array
(
[subjects] => English
[ischeck] => Yes
)
[4] => Array
(
[subjects] => Environmental Education
[ischeck] => yes
)
[5] => Array
(
[subjects] => French
[ischeck] => Yes
)
[6] => Array
(
[subjects] => hand writing
[ischeck] => No
)
[7] => Array
(
[subjects] => Hindi
[ischeck] => No
)
[8] => Array
(
[subjects] => Maths
[ischeck] => No
)
[9] => Array
(
[subjects] => Moral Teaching
[ischeck] => No
)
[10] => Array
(
[subjects] => music
[ischeck] => No
)
[11] => Array
(
[subjects] => Painting
[ischeck] => No
)
[12] => Array
(
[subjects] => Spoken English
[ischeck] => No
)
)
)
)
到目前为止我已经尝试过什么
$full_array = array();
foreach($array1 as $k)
{
$subarray = array();
foreach($array2 as $k1)
{
if($k['class'] == $k1['class'])
{
$classname = $k['class'];
foreach($k['subjects'] as $s)
{
if(in_array($s,$k1['subjects']))
{
$sub = array("subjects"=>$s,"ischeck"=>"Yes");
}
else
{
$sub = array("subjects"=>$s,"ischeck"=>"No");
}
array_push($subarray,$sub);
$ot1 = array("classname"=>$classname,"subs"=>$subarray);
array_push($full_array,$ot1);
}
}
else
{
$cname = $k['class'];
foreach($k['subjects'] as $sb=>$v)
{
$sub = array("subjects"=>$v,"ischeck"=>"No");
array_push($subarray,$sub);
}
$ot2 = array("classname"=>$cname,"subs"=>$subarray);
array_push($full_array,$ot2);
}
}
}
return $full_array;
如果第一个数组的类别为 kg,第二个数组的类别为 kg,那么在新数组中它应该添加一个新选项 ischeck Yes,并且对于与 array1 和 array2 比较的主题也相同,它应该在输出数组上添加 ischeck,如果主题存在于array2中,那么它应该在主题列之后的输出数组中添加ischeck。
【问题讨论】:
-
另外,您是否通过查询数据库获得所有这些数组?
-
是的,我从两个不同的表中获取它们,我只是希望它们在另一个数组中分开,这样我就可以显示检查了哪些课程和科目
-
通过循环可以创建一个符合您要求的数组。但这不是一个优化的解决方案。尝试从查询本身获取正确格式的数据。不要去不必要的循环
-
第二个数组可以是任意顺序,我希望按照第一个数组的顺序输出
-
@satya 你不需要在应用层做这一切,编写一个可以带来所需输出的查询,然后在应用层上使用该结果。
标签: php arrays multidimensional-array