不能在PHP中声明二维数组中的键

时间:2015-01-28 14:36:51

标签: php arrays

当我尝试生成数组时,就像这样:

$files_array = array(
        'name' => array(),
        'path' => array()
    );

然后为它们分配值:

$files_array['name'][] = $fileinfo->getFilename();
$files_array['path'][] = $pathname;

var_dump()函数返回一个带数字键的数组而不是" name"和"路径",像这样:

array(2) { [0]=> array(0) { } [1]=> array(0) { } }

阵列出了什么问题?我已经尝试了几种方法,但没有人给我我想要的阵列。

编辑: 填充的数组转储,具有相同的代码:

array(2) { [0]=> array(3) { [0]=> string(44) "./upload/4//lol/Nuovo documento di testo.TXT" [1]=> string(51) "./upload/4//lol/blue_bokeh_4-wallpaper-1366x768.jpg" [2]=> string(29) "./upload/4//lol/menny €.txt" } [1]=> array(3) { [0]=> string(28) "Nuovo documento di testo.TXT" [1]=> string(35) "blue_bokeh_4-wallpaper-1366x768.jpg" [2]=> string(13) "menny €.txt" } }

编辑: 我的完整代码

$files_array = array(
        'name' => array(),
        'path' => array()
    );


    $fileinfos = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($rootpath)
    );
    foreach ($fileinfos as $pathname => $fileinfo) {
        if (!$fileinfo->isFile())
            continue;
        $files_array['name'][] = $fileinfo->getFilename();
        $files_array['path'][] = $pathname;
    }

2 个答案:

答案 0 :(得分:-1)

这就是它的工作原理:

<?php
    $files_array = array();

    $i = 0;

    $files_array[$i]['name'] = $fileinfo->getFilename();
    $files_array[$i]['path'] = $pathname;

    $i++;

结果输出如下:

array (size=2)
  0 => 
    array (size=2)
      'name' => string 'file' (length=4)
      'path' => string '/foo/' (length=5)
  1 => 
    array (size=2)
      'name' => string 'file2' (length=5)
      'path' => string '/bar/' (length=5)   

答案 1 :(得分:-1)

我建议阅读关于数组的php手册。以下是一些例子。

//1
$files_array = array();
$files_array['name'] = array();
$files_array['path'] = array();

//2
$files_array = array(
'name' => [],
'path' => []
);