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

如何将PHP多维数组代码转换为C#实现并支持遍历?

C# 实现 PHP 嵌套关联数组逻辑并支持遍历

PHP 中的双层关联数组结构,在 C# 里可以通过嵌套 Dictionary + 自定义实体类来实现,这是最贴合原逻辑且便于后续处理的方案。

1. 定义实体类(替代 PHP 中的关联数组)

先创建一个对应 name 和 age 的类,让数据结构更清晰:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

2. 初始化嵌套字典并添加数据

外层字典用日期字符串作为键,内层字典用 int 类型的 ID 作为键,值为 Person 对象:

// 初始化嵌套字典
var data = new Dictionary<string, Dictionary<int, Person>>();

// 添加第一条数据:先判断日期键是否存在,不存在则创建内层字典
string targetDate = "09/10/2023";
if (!data.ContainsKey(targetDate))
{
    data[targetDate] = new Dictionary<int, Person>();
}
data[targetDate][10] = new Person { Name = "John Smith", Age = 50 };

// 添加第二条数据:日期已存在,直接操作内层字典
data[targetDate][11] = new Person { Name = "Amie Kim", Age = 30 };

3. 遍历数据

可以通过双层 foreach 循环遍历所有层级的数据,C# 7.0+ 支持解构语法让代码更简洁:

// 遍历外层日期分组
foreach (var (date, idDict) in data)
{
    Console.WriteLine($"日期:{date}");
    // 遍历当前日期下的所有ID和人员信息
    foreach (var (id, person) in idDict)
    {
        Console.WriteLine($"ID: {id},姓名: {person.Name},年龄: {person.Age}");
    }
}

可选:用匿名类型简化(不推荐复杂场景)

如果只是临时使用,也可以不用自定义类,直接用匿名类型,但匿名类型无法跨方法传递,后续处理受限:

var data = new Dictionary<string, Dictionary<int, object>>();
data["09/10/2023"][10] = new { Name = "John Smith", Age = 50 };
data["09/10/2023"][11] = new { Name = "Amie Kim", Age = 30 };

// 遍历时需要强制类型转换
foreach (var dateGroup in data)
{
    foreach (var entry in dateGroup.Value)
    {
        var person = (dynamic)entry.Value;
        Console.WriteLine($"ID: {entry.Key}, 姓名: {person.Name}, 年龄: {person.Age}");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:13:18