php - 使用 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));
但结果是徒劳的。任何人都可以帮助我获得所需的输出。我想过滤掉没有事件的学生
解决方案
你可以这样做:
<?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;
});
推荐阅读
- scala - 仅使用 sbt 构建带有 Gatling 测试的 jar 文件
- javascript - 给定一个序列和键,创建一个函数来找出序列中的字符是否按键的顺序出现
- javascript - 为什么在使用鼠标悬停侦听器插入时,此按钮会失去(部分)点击功能?
- javascript - 在循环中等待承诺
- java - android:服务布局在某些设备中未显示任何 TextView
- php - Symfony Yaml 回显变量名
- sql - 如何修复运行时错误 3067 查询输入
- sql - 将列数据聚合成描述
- mysql - 根据条件从表中选择计数
- apache - 添加新虚拟主机时 Apache 服务器无法启动