为了账号安全,请及时绑定邮箱和手机立即绑定

将 PHP 数组转换为 C#

将 PHP 数组转换为 C#

C#
慕哥9229398 2022-10-23 13:42:26
我需要帮助将 php 数组转换为下面的红色。我已经能够将一些数组转换为字典,但不确定最好的解决方案是什么,因为这是一个数组内部的数组。$reg_rows=array();$rc_count=0;$reg_counter=0;$hold_achtrndt="1970-01-01";$hold_regpay_sort="0";while ( ($row_rc=sqlsrv_fetch_assoc($result_rc)) )     {    if ( strtoupper(substr($row_rc['tb_value1'],4,1))=="Y" )          $reg_counter=count($reg_rows);  //If the paymethod is set to require it's own deposit, increment    elseif ( $row_rc['regpay_sort']!=$hold_regpay_sort )     {        $reg_counter=count($reg_rows);  //If the paymethod changes, increment so each different type is separated        $hold_regpay_sort=$row_rc['regpay_sort'];    }    **$reg_rows[$reg_counter][$row_rc['rc_code']]=$row_rc;** //THIS IS THE ARRAY I NEED HELP WITH    $rc_count++;}如果我向您展示我想要得到的东西,也许会更容易。下面的示例。where 0and1将是 reg_counter 和5514, 5115,5116将是 the$row_rc['rc_code']和 thearray[78]是从 SQL 表返回的字段。$reg_rows[0][5515]{array[78]}$reg_rows[1][5514]{array[78]}$reg_rows[1][5516]{array[78]}
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

正如您所说,您在数组的值中有一个关联数组¹。


在 C# 中,您将在数组的值或外部字典的值中放置一个字典。更准确地说,如果我们事先知道外部数组的大小,我们可以这样写


var size = 42; // let's assume we know this somehow

var outer = new Dictionary<InnerKey, InnerValue>[size];

for (int i = 0; i < size; i++) {

  for (key in some_source) {

    var value = some_function(key);

    if (outer[i] == null) {

      outer[i] = new Dictionary<InnerKey, InnerValue>();

    }

    outer[i].Add(somekey, somevalue);

  }

}

但是,在这种情况下,我们事先并不知道数组的大小,并且在 C# 中动态调整数组的大小会很痛苦,所以我们将使用一个其值本身就是字典的字典:


var outer = new Dictionary<Int, Dictionary<InnerKey, InnerValue>>;

for (int i = 0; i < size; i++) {

  for (key in some_source) {

    var value = some_function(key);

    if (!outer.ContainsKey(i)) {

      outer.Add(i, new Dictionary<InnerKey, InnerValue>());

    }

    outer[i].Add(somekey, somevalue);

  }

}

请注意,您还可以使用d[k] = v. 如果键已经存在,d[k] = v将覆盖其值,但d.Add(k, v)会引发异常,因此Add如果您知道键应该是唯一的,那么使用它会更安全。


为了更清晰的代码,以一些稍微复杂的功能为代价,您可以摆脱使用DefaultDictionary. 您也很可能通过使用 LINQ 摆脱循环。它看起来很像带有一些 C# 语法的 SQL,并且能够操作 C# 列表、字典、数组等。您正在使用的 SQL 绑定甚至可能具有 LINQ 接口!


¹ 键不是整数的数组通常称为关联数组(它将值与键相关联)。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号