@sidiqi

Как удалить пустой элемент многомерного массива?

Не могу найти решение. Как удалить элемент в многомерном массиве если ключ пустой?
массив выглядит так:
array:2 [▼
  0 => array:6 [▼
    "" => "что то не нужное"
    "brand" => "Бренд"
    "code" => "Артикул"
    "price" => "цена"
    "quantity" => "кол-во"
    "name" => "нейм"
  ]
]
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
antoo
@antoo
<?php
function walk_recursive_remove (array $array, callable $callback) { 
    foreach ($array as $k => $v) { 
        if (is_array($v)) { 
            $array[$k] = walk_recursive_remove($v, $callback); 
        } else { 
            if ($callback($v, $k)) { 
                unset($array[$k]); 
            } 
        } 
    } 
    return $array; 
}

$array = [[
    "" => "что то не нужное",
    "brand" => "Бренд",
    "code" => "Артикул",
    "price" => "цена",
    "quantity" => "кол-во",
    "name" => "нейм"
]];

$filtered = walk_recursive_remove($array, function ($value, $key) {
    return empty($value) || empty($key);
});

var_dump($filtered);
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@ipokos
перебрать массив в цикле и если есть нужный ключ - удалить его
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
unset($arr['']);
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
array_flip -> array_filter без сallback'а -> array_flip
Ответ написан
Комментировать
Frostealth
@Frostealth
Backend Developer
array_filter может принимать callback функцию и флаг ARRAY_FILTER_USE_BOTH, благодаря которому в callback функцию будет передан ключ элемента массива вторым аргументом

$array = [
    [
        "" => "что то не нужное",
        "brand" => "Бренд",
        "code" => "Артикул",
        "price" => "цена",
        "quantity" => "кол-во",
        "name" => "нейм",
    ],
];

$filter = function ($value, $key) {
    return !empty($key);
};

$result = array_map(function ($value) use ($filter) {
    return array_filter($value, $filter, ARRAY_FILTER_USE_BOTH);
}, $array);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект