php中的数组元素分组
我有这个数组php中的数组元素分组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个数组 Array ( [0] => Array ( [0] => Direct to Exhibitors [1] => IMTEX Website ) [1] => Array ( [0] => Direct to Exhibitors [1] => EDM ) [2] => Array ( [0] => V
Array
(
[0] => Array
(
[0] => Direct to Exhibitors
[1] => IMTEX Website
)
[1] => Array
(
[0] => Direct to Exhibitors
[1] => EDM
)
[2] => Array
(
[0] => Visitors Promotion in General
[1] => Digital
[2] => Mobile Apps
)
[3] => Array
(
[0] => Visitor Promotion in General
[1] => Digital
[2] => IMTEX Website
)
[4] => Array
(
[0] => Visitor Promotion in Genral
[1] => Mass Media
[2] => Print Media
)
)
我想要这种格式的输出
Array
(
[Direct to Exhibitors] => Array
(
[0] => IMTEX Website
[1] => EDM
)
[Visitors Promotion in General] => Array
(
[Digital] => Array
(
[0] => Mobile Apps
[1] => IMTEX Website
)
[Mass Media] => Array
(
[0] => Print Media
)
)
)
一个简单的foreach可以:
<?php
$arr = [
['Visitors Promotion in General','Digital','Mobile Apps'],
['Visitors Promotion in General','Digital','IMTEX Website'],
['Visitors Promotion in General','Mass Media','Print Media']
];
$finalArr = [];
foreach ($arr as $value) {
$finalArr[$value[0]][$value[1]][] = $value[2];
}
print_r($finalArr);
更新1,2:动态大小2/3元素
foreach ($arr as $value) {
if(isset($value[2]))
$finalArr[$value[0]][$value[1]][] = $value[2];
else
$finalArr[$value[0]][] = $value[1];
}
更新3:动态大小n个元素
foreach ($arr as $value) {
$tempArr = [];
foreach (array_reverse($value) as $arr) {
$tempArr = [$arr => $tempArr];
}
$finalArr = array_replace_recursive($finalArr,$tempArr);
}
[但现在final array也是一个数组,正在寻找将其转换为元素的方法]
对于此输入:
$arr = [
['Visitors Promotion in General','Digital','Mobile Apps'],
['Visitors Promotion in General','Digital','Web Apps'],
['Direct to Exhibitors','EDM'],
['Visitors Promotion in General','Digital'],
['Visitors Promotion in General','Mass Media','Print Media'],
['Visitors Promotion in General','Mass Media','Print Media','Mass'],
['Direct to Exhibitors','IMTEX Website']
];
是输出:
Array
(
[Visitors Promotion in General] => Array
(
[Digital] => Array
(
[Mobile Apps] => Array
(
)
[Web Apps] => Array
(
)
)
[Mass Media] => Array
(
[Print Media] => Array
(
[Mass] => Array
(
)
)
)
)
[Direct to Exhibitors] => Array
(
[EDM] => Array
(
)
[IMTEX Website] => Array
(
)
)
)
正在尝试此解决方法:
function findEmpty($arr) {
foreach ($arr as $key => $value) {
if(is_array($value) && !empty($value)){
$arr[$key] = findEmpty($value);
} else {
return $key;
}
}
return $arr;
}
print_r(findEmpty($finalArr));
如果数组长度不固定会发生什么情况;也就是说,如果一个数组只有两个元素,而另一个数组有三个元素(大小不固定),我们可能也需要处理这个问题。。那么它至少会有2个吗?看到更新的一个你可以再次看到我的问题,它有数组大小2,3,大小可以是4,也可以是5。。。也。我必须根据这一点分组4、5、6号,如果数组大小是动态的。我必须根据数组的大小添加if-else。是否有任何通用解决方案适用于所有尺寸的产品array@ankit更新。仍然缺少最后一步
function findEmpty($arr) {
foreach ($arr as $key => $value) {
if(is_array($value) && !empty($value)){
$arr[$key] = findEmpty($value);
} else {
return $key;
}
}
return $arr;
}
print_r(findEmpty($finalArr));