转换一个字符串数组,每个字符串已经点分隔的价值观,多维数组 [英] Convert an array of strings, each string has dot separated values, to a multidimensional array

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

问题描述

我有以下数组:

 阵列

    [0] => INBOX.Trash
    [1] => INBOX.Sent
    [2] => INBOX.Drafts
    [3] => INBOX.Test.sub文件夹
    [4] => INBOX.Test.sub folder.test 2

我怎么可以这样数组转换为一个多维数组是这样的:

 阵列

    [收件箱] =>排列
        (
            [垃圾] =>排列
                (
                )            [发送] =>排列
                (
                )            [草案] =>排列
                (
                )            [测试] =>排列
                (
                    [子文件] =>排列
                        (
                            [测试2] =>排列
                                (
                                )                        )                )        ))


解决方案

试试这个。

 < PHP
$测试=阵列

    0 => INBOX.Trash',
    1 => INBOX.Sent',
    2 => INBOX.Drafts',
    3 => INBOX.Test.sub文件夹,
    4 => 'INBOX.Test.sub folder.test 2',
);$输出=阵列();
的foreach($测试为$元素){
    assignArrayByPath($输出,$元件);
}
//的print_r($输出);
调试($输出);
功能assignArrayByPath(安培; $改编,$ PATH){
    $键=爆炸(,$ PATH'。');    虽然($关键= array_shift($键)){
        $ ARR =安培; $改编[$关键];
    }
}功能调试($ ARR){
    回声< pre>中;
    的print_r($ ARR);
    回声< / 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天全站免登陆