Добавить элемент в многомерный массив (php)

286
03 октября 2017, 07:02

Есть многомерный массив $catalog с неограниченной вложенностью. Например,

Array
(
    [1] => Array
        (
            [name] => Раздел 1
            [11] => Array
                (
                    [name] => Раздел 1.1
                )
        )
    [2] => Array
        (
            [name] => Раздел 2
            [21] => Array
                (
                    [name] => Раздел 2.1
                    [211] => Array
                        (
                            [name] => Раздел 2.1.1
                        )
                )
            [22] => Array
                (
                    [name] => Раздел 2.2
                )
        )
)

И есть массив $keys с определенным набором ключей для первого массива $catalog. Например,

Array
(
    [0] => 2
    [1] => 21
)

Используя эти примеры, как мне добавить в $catalog[2][21] новый элемент? Чтобы в массиве появилось:

[212] => Array
    (
        [name] => Раздел 2.1.2
    )
Answer 1

Ок, нам нужно будет найти максимальный ключ на данном уровне вложенности и добавить к нему единицу, это и будет новый ключ.

$in_keys = [1,17,173];
$last_in_key = $in_keys[sizeof($in_keys) - 1];
$curr_el = $catalog;
foreach($in_keys => $k) {
    $curr_el = $curr_el[$k];
}
$keys = [];
foreach ($curr_el as $k => $v) {
    if (is_numeric($k)) {
        $keys[] = $k;
    }
}
$max_key = sizeof($keys) > 0 ? max($keys) : $last_in_key * 10;
$new_key = $max_key + 1;
$curr_el[$new_key] = $new_element;
READ ALSO
file_get_contents ошибка denwer

file_get_contents ошибка denwer

выдает ошибку:

339
Установка модуля pthreads php Ubuntu

Установка модуля pthreads php Ubuntu

Пытался установить composer Ввожу команду php composerphar install и выдает следующую ошибку

323
Помогите придумать логику

Помогите придумать логику

у меня есть код которий считает росход за месяц

262
Ошибка Undefined offset: 1 in

Ошибка Undefined offset: 1 in

Пытаюсь переписать значения в бд используя массивы, каждый раз ругается на значение индекса $row[t2] в строчке :

232