无法在 PHP 中声明二维数组中的键


Can't declare keys in two dimensional array in PHP

当我尝试生成数组时,如下所示:

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

然后为它们分配值:

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

var_dump()函数向我返回一个带有数字键而不是"name"和"path"的数组,如下所示:

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

这就是它的工作原理:

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

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

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