我试图从一系列代表深度的字符串中提取:
'foo/bar/x'
'foo/bar/baz/x'
'foo/bar/baz/x'
'foo/bar/lol/x'
Run Code Online (Sandbox Code Playgroud)
x我不关心的数字在哪里.我已经完成了分裂/和循环,在PHP中,我会做一些事情,比如检查我在循环中的位置(使用for (i=0; etc)),然后使用它来确定我构建输出数组的深度,如:
output['foo']['bar'] = 1
output['foo']['bar']['baz'] = 2
output['foo']['bar']['lol'] = 1
Run Code Online (Sandbox Code Playgroud)
问题是"深度"是动态的,可能只是3/4深(我可以通过对价值的大量检查i和单独处理它来解释)或者说10或更深,在这种情况下某种类型的递归函数可能是最好的.
我遇到了一个问题,即将字符串作为数组索引我需要使用字典,但是你必须在字典中指定类型,这意味着你需要知道高级的深度(如果我是的话,请纠正我)在实例化字典对象时.
我猜一个攻击可能就像调用一个递归函数,每次调用它来传递i指示深度,然后函数调用自己i每次递减,直到它从该输入字符串构建树的一部分,但它是什么存储我在C#中使用的结构,我不确定.
最终输出将是一个CSV,我可以打开它作为电子表格,如下所示:
Foo 0
|__Bar 1
|__Baz 2
|__Lol 1
Run Code Online (Sandbox Code Playgroud)
也许对于溶液中的一种方向是使用纯C#阵列和简单地存储的标题(例如foo)在那里,保持了阵列indicies,这可能是最好的做法反正的信息.谢谢.
我需要对这个DataTable概念有点引导.我将数据存储在DataTable中,我首先添加一个列,如下所示:
DataTable outputData = new DataTable();
outputData.Columns.Add("Reference/Group");
Run Code Online (Sandbox Code Playgroud)
现在,如果我将其写入CSV文件(使用我自己的类),我会得到你所期望的,电子表格软件中的视图如:
A
1 Reference/Group
Run Code Online (Sandbox Code Playgroud)
然而,当我继续在我的脚本中假设存在第1行(通过引用outputData.Rows[0])时,我得到:
Exception: There is no row at position 0.
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试添加具有上述内容的行,则会抱怨没有列.如果我指定列然后添加一行,我可以参考,Rows[0]但到那时我有两行,如:
A
1 Reference/Group
2 Some new row
Run Code Online (Sandbox Code Playgroud)
这里的正确方法是什么,这种行为的原因是什么?
我正在尝试使用foreach控件循环遍历字符串数组,然后使用每个值在数据库中插入信息.有人可以帮我理解为什么在using子句中我不能使用foreach变量?
string[] ship_ids = ShipsInScope.Split('|');
foreach (string ship_id in ship_ids)
{
using (SqlCommand InsertCommand = new SqlCommand("insert into PROJECT_SHIP (CR_Number, Ship_Id) VALUES (@CR_Number, @CCF_Number)", DBConn))
{
InsertCommand.Parameters.Add("@CR_Number", SqlDbType.NVarChar, 10).Value = CRNumber;
InsertCommand.Parameters.Add("@Ship_Id", SqlDbType.NVarChar, 10).Value = Ship_Id;
InsertCommand.ExecuteNonQuery();
InsertCommand.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud) 我是SQL Server的新手,所以我希望你能提供帮助.
基本上我有两个信息表.第一个看起来像:
ID, Name]FKID, ID, Name]我想做一个如下声明:
SELECT table1.Name, table2.Name
FROM table1
LEFT JOIN table2 ON table2.FKID = table1.ID
Run Code Online (Sandbox Code Playgroud)
这导致类似于:
['Name 1a', 'Name 2a']
['Name 1b', NULL]
['Name 1c', NULL]
Run Code Online (Sandbox Code Playgroud)
但我想要的只是选择一列,Name 1x或者Name 2x是否为空(左连接没有键匹配).
我想,典型的响应是使用我的编程语言来解决这个问题,但是在使用GridViews的Visual Web Developer和所有这些废话中证明这是非常困难的,所以最有用的是数据库解决方案.
非常感谢!
我遇到的问题是,即使我已经在更高的范围内声明了我的变量,当我去使用它时,我被告知它需要显式的包名.代码如下:
my $stats = {
privileges => (),
missing_users => ()
};
LINE:
while (my $line = <$fh>)
{
chomp($line);
next if $line eq "";
my $regex = "";
my $type = "";
while (($type, $regex) = each(%$entry_regex))
{
if ($line =~ /$regex/) {
if ($type eq "EXCEPTION_PRIVS")
44: {
45: push(@{$stats{privileges}}, $1);
46: next LINE;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
全局符号"%stats"需要在Import Routine Log Pars er.pl第45行显式包名.
我没有收到此错误,并且脚本会根据需要运行,何时use strict;删除.
我认为,因为我已经在一个"更高"的范围内声明它应该可以访问循环中的代码.为什么我收到此错误?