2015-01-28 2 views
-3

Когда я пытаюсь генерировать массив, как таким образом:не может объявить ключи в двухмерном массиве в PHP

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

, а затем присвоить им значения:

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

функция var_dump() вернуть меня массив с числовыми ключами вместо «имени» и «пути», например:

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

Что не так с t он массив? Я пробовал несколько способов сделать это, но никто не дал мне мой желаемый массив.

EDIT: Заполненный свалка массив, с тем же кодом:

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

EDIT: Мой полный код

$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; 
    } 
+0

Дамп, добавляемый к вашему вопросу, относится не к этому массиву. – panther

+1

'var_dump ($ files_array);' дает результаты, которые вы вставляли? Я сильно сомневаюсь, что вы var_dump ** right ** array. –

+1

Пожалуйста, покажите нам полный код! – Rizier123

ответ

-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) 
+0

Это хорошее решение для моего имени/массива путей, но до сих пор не может понять, почему весь базовый метод объявления ключей не работает – StreamZero

+0

Поскольку файл и путь находятся в подмассивах. Вы не можете включить в свою схему под-массив. –

-1

Я предлагаю прочитать руководство по php на массивах. Вот несколько примеров.

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

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

Объявление об этом также в вопросе. –

Смежные вопросы