Удалить многомерный массив с пустыми вложенными массивами, используя PHP

Помимо упомянутых причин (назначение цепочки, set-and-test внутри цикла while и т. д.), правильно используйте инструкцию using, в которой эта функция нужна:

using (Font font3 = new Font("Arial", 10.0f))
{
    // Use font3.
}

MSDN препятствует объявлению одноразового объекта вне оператора using, так как он будет оставаться в области видимости даже после его размещения (см. статью I статьи MSDN).

-1
задан Sandeep 18 January 2019 в 11:30
поделиться

3 ответа

Вы можете сделать это:

<?php

$output = array_filter($array, function (array $studentDays) {
    foreach ($studentDays as $day) {
        // if there is a *non-empty* day, we return early and keep the whole record
        if (! empty($day)) {
            return true;
        }
    }

    // only empty days, so discard the record
    return false;
});

https://3v4l.org/AkshS

0
ответ дан Yoshi 18 January 2019 в 11:30
поделиться

Цикл по массиву и применить array_filter

$array = [
    'Alex' => [
        [
            ['event' => 'eventName1'],['event' => 'eventName2']
        ],
        [
            ['event' => 'eventName3'],['event' => 'eventName4']
        ],
        [
            ['event' => 'eventName5'],['event' => 'eventName6']
        ],
        [
            ['event' => 'eventName7'],['event' => 'eventName8']
        ],
        [],
        [],
        []

    ], 
 'christoper'=>[
      [],[],[],[],[],[],[]
 ]
];

foreach( $array as $key => $value ){
    $array[$key] = array_filter($value);
}

print_r( $array );
0
ответ дан Tamim 18 January 2019 в 11:30
поделиться

Рекурсивный вызов array_filter выполнит эту работу; во внешнем вызове мы проверяем размер возвращаемого массива, чтобы решить, сохранять ли этот элемент или нет (это будет 0, если массив состоял исключительно из пустых массивов, как это происходит для 'christopher'):

Демо на 3v4l.org

0
ответ дан Nick 18 January 2019 в 11:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: