You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中按键分组值:Foreach循环内处理多维数组

按指定键对MySQL拉取的多维数组分组

嘿,我来帮你搞定这个多维数组分组的需求!思路其实很直白:我们只需要遍历你的$notes数组,把每个子数组里的目标键(比如due_date、date或者heading)作为新数组的键,然后把对应的子数组归类到这个键下面就行。

基础分组示例(按单个键)

比如我们要按due_date(截止日期)来分组,把同一天的所有笔记归到一起,代码可以这么写:

// 初始化一个空的分组数组
$groupedNotes = [];

// 遍历原始的notes数组
foreach ($notes as $note) {
    // 取出用来分组的键值,这里用due_date做例子
    $groupKey = $note['due_date'];
    
    // 如果这个分组键还没在数组里,先初始化一个空数组
    if (!isset($groupedNotes[$groupKey])) {
        $groupedNotes[$groupKey] = [];
    }
    
    // 把当前这条笔记加到对应的分组中
    $groupedNotes[$groupKey][] = $note;
}

// 查看分组后的结果
var_dump($groupedNotes);

运行这段代码后,你会得到一个新数组:每个键是不同的due_date值,对应的数组里包含所有该截止日期的笔记条目。

进阶:按多个键分组

如果你需要同时按多个维度分组(比如同时按due_date和heading),只需要把多个键的值拼接成一个唯一的分组键就行:

$groupedNotes = [];

foreach ($notes as $note) {
    // 拼接多个键作为分组标识,用特殊字符分隔避免冲突
    $groupKey = $note['due_date'] . '||' . $note['heading'];
    
    if (!isset($groupedNotes[$groupKey])) {
        $groupedNotes[$groupKey] = [];
    }
    
    $groupedNotes[$groupKey][] = $note;
}

小提示

  • 如果你担心键值为空的情况,可以加个判断,比如$groupKey = !empty($note['due_date']) ? $note['due_date'] : '未设置截止日期';,这样空值的条目会被归到统一的分组里。
  • 你可以把due_date换成任何你需要的键,比如date(创建日期)或者heading(标题),只需要修改$groupKey的取值即可。

内容的提问来源于stack exchange,提问作者Bululu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:11:16