Удалите пустые элементы массива из массива, не зная ключей

У меня есть массив, в котором я не знаю, как называются ключи, и я пытаюсь удалить все элементы из массива, в котором все подключаемые ключи пусты (без значения).

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

Array
(
    [0] => Array
        (
            [Some key here] => 26542973
            [generated key] => John
            [who knows what key] => 10
        )

    [1] => Array
        (
            [Some key here] => 
            [generated key] => 
            [who knows what key] => 
        )

)

Я попытался использовать фильтр массива, но он не удалил пустой элемент. Он оставил их обоих в массиве.

$filtered_array = array_filter($array);

Я бы хотел, чтобы конечный результат выглядел так (пустой элемент удален).

Array
(
    [0] => Array
        (
            [Some key here] => 26542973
            [generated key] => John
            [who knows what key] => 10
        )
)

Итак, что должно произойти, если только один из подэлементов пуст, например просто [Some key here]

RiggsFolly 31.10.2018 11:51

Его следует удалять только в том случае, если все подэлементы пусты. Я должен обновить вопрос.

Liga 31.10.2018 11:53

Посмотрите stackoverflow.com/questions/9895130/…, так как он охватывает довольно много сценариев.

Nigel Ren 31.10.2018 11:54
1
3
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте array_map с array_filter.

$array = array(array('data1','data1'), array('data2','data2'), array('','')); 
$array = array_filter(array_map('array_filter', $array));
print_r($array);

ДЕМО

Если у вас есть array('data3',''), пустой элемент будет удален, это то, что нужно?

Nigel Ren 31.10.2018 12:00
Ответ принят как подходящий

Вы можете использовать array_filter(), как показано внизу. Поэтому вам нужно соединить элементы внутреннего массива с помощью implode() и проверить, пустой ли результат.

$arr = array_filter($arr, function($val){
    return implode("", $val) != "";
});

Проверить результат в демонстрация

Он оставил все пустые и удалил те, у которых есть значения (противоположный эффект)

Liga 31.10.2018 11:59

@Liga Исправлена ​​ошибка :)

Mohammad 31.10.2018 12:00

Требуется ли, чтобы все подпункты были пустыми или только один?

Liga 31.10.2018 12:01

@Liga Все, как ты сказал.

Mohammad 31.10.2018 12:02

Другие вопросы по теме