首页 > 解决方案 > 使用 PHP 删除具有空子数组的多维数组

问题描述

我有这个数组如下。从星期一到星期日,每个学生都有 7 个数组,每个学生的内部数组都有一天的事件

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

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

输出数组应该是

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

    ]
];

我试过这个

$array = array_filter(array_map('array_filter', $array));

但结果是徒劳的。任何人都可以帮助我获得所需的输出。我想过滤掉没有事件的学生

标签: phparraysmultidimensional-array

解决方案


你可以这样做:

<?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


推荐阅读