-4

我不是 ac# 程序员但我想将一些代码从 c# 转换为 php。我无法理解下一行的正确含义。

i means my loop index
strVar.Add(string.Format("'{0}': '{1}'", (i + 1), fa["id"]));

我找到了以下链接,但这不是我正在寻找的
C#: php sprintf 等效项

无法理解它们的确切含义因为我对 c# 很
陌生 http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

4

4 回答 4

3

这将产生一个字符串。假设i + 12fa["id"]那么567结果字符串是:

"'2': '567'"

{0}并且{1}是字符串中的占位符,它们会string.Format按照提供的顺序从其他参数替换为 。So{0}将被替换,(i+1)并且{1}将被替换为fa["id"]

请参阅:String.Format 方法

Format 方法的每个重载都使用复合格式化功能在复合格式字符串中包含从零开始的索引占位符,称为格式项。在运行时,每个格式项都替换为参数列表中相应参数的字符串表示形式。如果参数的值为 null,则格式项将替换为 String.Empty。例如,对 Format(String, Object, Object, Object) 方法的以下调用包括具有三个格式项 {0}、{1} 和 {2} 的格式字符串,以及具有三个项的参数列表。

于 2013-05-24T07:43:00.677 回答
2

首先,您指向自定义数字格式字符串的链接与此处无关。

String.Format可用于格式化字符串(顾名思义)。您可以在字符串中使用 格式项,它们是用大括号括起来的数字。例如:

string text = String.Format("His name is {0}, he is {1} years old.", person.Name, person.Age);

{num}将用与数字相同索引的对象替换所有出现的 。由于person.Name是字符串后的第一个对象,{0}将被替换为person.Name依此类推。

于 2013-05-24T07:46:32.577 回答
1

Format 函数接受一个字符串和一对多的参数,{'number'} 表示字符串应该接受参数 'number' 并将其插入该位置。

Fi 如果 i = 1 你的代码片段会添加 "'2':value of fa["id"]" 到你的 strVar

(更多信息:http: //msdn.microsoft.com/en-us/library/system.string.format.aspx

于 2013-05-24T07:44:09.900 回答
1
string s = "THE VARIABLE";
string.format("Here is some text {0} when I put a bracket with numbers it represents the following variables string representation", s);

//Prints: Here is some text THE VARIABLE when I put a bracket with numbers it represents the following variables string representation

因此 {0} 表示将其替换为在此之后出现的第一个变量的字符串表示形式。{1} 说要取第二个。另一种方法是使用:

string s = "World";
Console.PrintLine("Hello " + s + "!");
//Prints: Hello World!

在这种小格式中它是可读的,但是当你得到很多变量时,看字符串会变成什么真的会让人很困惑。通过使用 string.Format(),它会更容易阅读。

现在假设您有一个名为 id 的变量,并且您在 php 中有一个名为 fa 的数组,您想用 id 对其进行索引。使用 string.Format() 看起来像:

int id = 3;
Console.PrintLine(string.Format("fa[\"{0}\"]", id)); //Prints: fa["3"]
Console.PrintLine("fa[\"" + id + "\"]"); //Also prints fa["3"] but it is a lot harder to read the code.
于 2013-05-24T07:44:51.433 回答