Questions tagged «multidimensional-array»

多维数组可以描述为多维表。用于查找给定元素的每个索引称为维。


7
获取PHP stdObject中的第一个元素
我有一个看起来像这样的对象(存储为$ videos) object(stdClass)#19 (3) { [0]=> object(stdClass)#20 (22) { ["id"]=> string(1) "123" etc... 我想获取第一个元素的ID,而不必循环访问它。 如果它是一个数组,我会这样做: $videos[0]['id'] 它曾经这样工作: $videos[0]->id 但是现在我在上面显示的行上收到一个错误“无法将stdClass类型的对象用作数组...”。可能是由于PHP升级。 那么,如何不循环就获得第一个ID?可能吗? 谢谢!

5
为什么C#多维数组不实现IEnumerable <T>?
我刚刚注意到C#中的多维数组没有实现IEnumerable&lt;T&gt;,但是实现了IEnumerable。对于一维数组,这两个IEnumerable&lt;T&gt;和IEnumerable来实现。 为什么会有这种差异?如果是多维数组IEnumerable,那么肯定也应该实现通用版本吗?我注意到这一点是因为我尝试对多维数组使用扩展方法,除非您使用Cast&lt;T&gt;或类似方法,否则扩展方法将失败。所以我绝对可以看到使多维数组实现的参数IEnumerable&lt;T&gt;。 为了澄清我的问题在代码中,我希望下面的代码打印true的四倍,而它实际打印true,false,true,true: int[] singleDimensionArray = new int[10]; int[,] multiDimensional = new int[10, 10]; Debug.WriteLine(singleDimensionArray is IEnumerable&lt;int&gt;); Debug.WriteLine(multiDimensional is IEnumerable&lt;int&gt;); Debug.WriteLine(singleDimensionArray is IEnumerable); Debug.WriteLine(multiDimensional is IEnumerable);

2
混淆二维数组时strlen的意外优化
这是我的代码: #include &lt;string.h&gt; #include &lt;stdio.h&gt; typedef char BUF[8]; typedef struct { BUF b[23]; } S; S s; int main() { int n; memcpy(&amp;s, "1234567812345678", 17); n = strlen((char *)&amp;s.b) / sizeof(BUF); printf("%d\n", n); n = strlen((char *)&amp;s) / sizeof(BUF); printf("%d\n", n); } 使用gcc 8.3.0或8.2.1以及任何优化级别,但我期望的是-O0此输出。编译器决定将限制于,因此永远不能等于或超过被除以的值。0 22 2strlenb[0] 这是我的代码中的错误还是编译器中的错误? 标准中并未明确阐明这一点,但是我认为指针来源的主流解释是,对于任何对象X,代码(char *)&amp;X都应生成一个可以迭代整个对象的指针X-即使X碰巧具有子数组作为内部结构。 (奖金问题,是否有gcc标志来关闭此特定优化?)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.