将字符串数组(每个字符串都有点分隔值)转换为多维数组 [英] Convert an array of strings, each string has dot separated values, to a multidimensional array

查看:60
本文介绍了将字符串数组(每个字符串都有点分隔值)转换为多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数组:

数组([0] =>收件箱.垃圾箱[1] =>收件箱.已发送[2] =>收件箱.草稿[3] =>INBOX.Test.sub 文件夹[4] =>INBOX.Test.sub 文件夹.test 2)

如何将此数组转换为这样的多维数组:

数组([收件箱] =>大批([垃圾] =>大批()[发送] =>大批()[草稿] =>大批()[测试] =>大批([子文件夹] =>大批([测试 2] =>大批()))))

解决方案

试试这个.

'收件箱.垃圾',1 =>'INBOX.Sent',2 =>'收件箱.草稿',3 =>'INBOX.Test.sub 文件夹',4 =>'INBOX.Test.sub 文件夹.test 2',);$输出=数组();foreach($test 作为 $element){assignArrayByPath($output, $element);}//print_r($output);调试($ 输出);函数assignArrayByPath(&$arr, $path) {$keys = expand('.', $path);而 ($key = array_shift($keys)) {$arr = &$arr[$key];}}功能调试($ arr){echo "

";打印_r($arr);echo "</pre>";}

I have the following array:

Array
(
    [0] => INBOX.Trash
    [1] => INBOX.Sent
    [2] => INBOX.Drafts
    [3] => INBOX.Test.sub folder
    [4] => INBOX.Test.sub folder.test 2
)

How can I convert this array to a multidimensional array like this:

Array
(
    [Inbox] => Array
        (
            [Trash] => Array
                (
                )

            [Sent] => Array
                (
                )

            [Drafts] => Array
                (
                )

            [Test] => Array
                (
                    [sub folder] => Array
                        (
                            [test 2] => Array
                                (
                                )

                        )

                )

        )

)

解决方案

Try this.

<?php
$test = Array
(
    0 => 'INBOX.Trash',
    1 => 'INBOX.Sent',
    2 => 'INBOX.Drafts',
    3 => 'INBOX.Test.sub folder',
    4 => 'INBOX.Test.sub folder.test 2',
);

$output = array();
foreach($test as $element){
    assignArrayByPath($output, $element);   
}
//print_r($output);
debug($output);
function assignArrayByPath(&$arr, $path) {
    $keys = explode('.', $path);

    while ($key = array_shift($keys)) {
        $arr = &$arr[$key];
    }
}

function debug($arr){
    echo "<pre>";
    print_r($arr);
    echo "</pre>";
}

这篇关于将字符串数组(每个字符串都有点分隔值)转换为多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆