Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的数组元素分组_Php_Arrays_Multidimensional Array - Fatal编程技术网

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));