微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Php动态数组名称

我试图通过动态名称分配数组的值我正在尝试跟随

$arr = array();

$path = 'arr'."['item']['abc']";

${$path} = array(
       'name'=>'somename',
       'other'=>'...'
);

不是${$path} => $改编[ ‘项目’] [ ‘ABC’];

我也试过了$$路径,应该评价为$arr [‘item’] [‘abc’];但他们都没有工作

http://codepad.viper-7.com/Dc8Jei

更新 – > http://codepad.viper-7.com/k4sIgJ

我想要做的是在数组中存储文件文件我有这样的目录结构

(这是amazon aws s3对象键)

   aaa/aaab/ 
   aaa/a.png 
   aaa/abc/one.png 

   abb/a/
   abb/some/
   abb/some/ac.png

现在我要做的是将这些项目存储在数组中

我将这些键分解成这个字符串就像

 ['aaa']['abc']

现在我想得到的是

[aaa]{
    [aaab]{}
    [abc]{
        [0]{one.png}
    }
    [aaab]{}
}

它只是为了说明

解决方法:

比变量变量更少的方法是建立一个合适的结构:

<?PHP

$arr = array();

$loc_arr = array(
   'item' => array(
           'abc',
           'www',
           'ccc'),
   'other item' => array(
           'other index'
   )
);

foreach($loc_arr as $item => $scndLevel){
    foreach ( $scndLevel as $level) {
        $arr[$item][$level] = array(
           'name'=>'somename',
           'other'=>'...'
        );
    }
}

print_r($arr);

这打印:

Array
(
    [item] => Array
        (
            [abc] => Array
                (
                    [name] => somename
                    [other] => ...
                )    
            [www] => Array
                (
                    [name] => somename
                    [other] => ...
                )   
            [ccc] => Array
                (
                    [name] => somename
                    [other] => ...
                )    
        )   
    [other item] => Array
        (
            [other index] => Array
                (
                    [name] => somename
                    [other] => ...
                )    
        )    
)

更新:

遍历目录时应考虑递归函数,而不是程序方法

代码

dir = array();

function traverse(dir)
{
    foreach ( direntry as filename) {
        if ( filename is a sub directory ) {
            dir[filename] = array();
            traverse(dir[filename]);
        } else {
            dir[] = filename;
        }

}
dir['/'] = array();
traverse(dir['/']);

这只是为了给你一个想法和一个起点,这不是工作代码.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐