PHP Динамическое добавление измерений в массив с использованием цикла for - PullRequest
1 голос
/ 26 августа 2010

Вот моя дилемма и спасибо заранее!

Я пытаюсь создать переменную переменную или что-то в этом роде для динамического ассоциативного массива и чертовски долго разбираюсь, как это сделать,Я создаю файловый менеджер, поэтому я использую каталоги в качестве ключей в массиве.

Пример:
Мне нужно получить это, чтобы я мог присвоить ему значения

$dir_list['root']['folder1']['folder2'] = value;

так что я думал о том, чтобы сделать что-то в этом духе ...

if ( $handle2 = @opendir( $theDir.'/'.$file ))
{
    $tmp_dir_url = explode($theDir);
    for ( $k = 1; $k < sizeof ( $tmp_dir_url ); $k++ )
    {
        $dir_list [ $dir_array [ sizeof ( $dir_array ) - 1 ] ][$tmp_dir_url[$k]]
    }

- вот где я застреваю, мне нужно динамически добавлять новое измерение в массив во время каждой итерации цикла for ...но я не знаю, как

Ответы [ 3 ]

2 голосов
/ 26 августа 2010

Я бы использовал рекурсивный подход:Хагги

0 голосов
/ 28 апреля 2015

Как насчет этого?В результате значения массива будут объединены в несколько измерений.

$keys = array(
'year',
'make',
'model',
'submodel',
);

$array = array(); print_r(array_concatenate($array, $keys)); function array_concatenate($array, $keys){ if(count($keys) === 0){ return $array; } $key = array_shift($keys); $array[$key] = array(); $array[$key] = array_concatenate($array[$key], $keys); return $array; }

В моем случае я знал, что я хочу, чтобы $ keys содержалЯ использовал его, чтобы занять место:

if(isset($array[$key0]) && isset($array[$key0][$key1] && isset($array[$key0][$key1][$key2])){ // do this }

Приветствия.

0 голосов
/ 26 августа 2010

Вы можете свободно помещать массив в ячейку массива, эффективно добавляя 1 измерение только для необходимых каталогов.

Т.е.

$a['x'] = 'text';
$a['y'] = new array('q', 'w');

print($a['x']);
print($a['y']['q']);
...