php中的php数组简单

时间:2016-11-14 15:26:02

标签: c# php arrays

我使用php,我非常大量地使用他的dinamyc数组。

现在我正在使用c#并且我正在搜索类似的内容。

这就是重点:

我在数据库中进行查询,它返回一个包含5个字段的记录集:

  • 姓名人
  • 日期
  • type shift
  • 班次数
  • 分钟工作

我想动态创建像这样的多维数组

(PHP代码) 在$ rs我有一个记录集记录

arrWork = array();

arrWork[$rs["Name"]][$rs["Date_shift"]][$rs["type_shift"][$rs["shift"]] += rs["minute_work"];

如你所知,我在1行中创建了数组的所有维度。

在c#中,我必须使用Hashtables,但我必须检查每个级别,我认为管理它的时间非常昂贵。

有没有办法在c#

中简化php数组

1 个答案:

答案 0 :(得分:1)

很多C#程序员实际上喜欢语言的声明性语法和类型安全性。我不认为有一个完全可以满足您需求的答案。

我试了一下:)

public class ValueOrDictionary : IDictionary<object, ValueOrDictionary>
{
    private readonly IDictionary<object, ValueOrDictionary> storage = new Dictionary<object, ValueOrDictionary>();
    private object value;
    private bool isValue = false;

    public ValueOrDictionary this[object key]
    {
        get
        {
            if (isValue)
            {
                throw new InvalidOperationException();
            }

            ValueOrDictionary subLevel;
            if (!storage.TryGetValue(key, out subLevel))
            {
                subLevel = new ValueOrDictionary();
                storage[key] = subLevel;
            }

            return subLevel;
        }
        set
        {
            storage[key] = value;
        }
    }

    public object Value
    {
        get
        {
            return value;
        }
        set
        {
            this.value = value;
            isValue = value != null;
        }
    }

    // ... rest of IDictionary<,> implementation

然后您可以使用以下内容:

ValueOrDictionary arr = new ValueOrDictionary();
arr["a"]["b"].Value = 8;
int myvalue = (int)arr["a"]["b"].Value;

这样每个&#34;级别&#34;在字典中兼作&#34;值容器&#34;。

最后,您可能会在第一次编写应用程序时赢得一些时间,但我认为您将花费更多时间来维护应用程序,因为您的编译器无法再帮助您确定每个值的类型。

如果您坚持使用目前习惯的内容,那么从您的同事或此处获取有关phpc#代码的帮助也会变得更加困难。