奇怪的数组语法

6

我正在尝试理解一个给我的函数是如何工作的,或者说为什么不工作。问题出现在像这样的数组表示法中:

$small[$end[$i]{0}]

我认为这个想法是在$end[$i]的值后面添加“0”,并将其用作$small的索引。但在PHP5.3中无法正常工作。这是一种已被弃用的语法吗?它是否尝试做我认为的事情?


是指“php出现语法错误导致无法运行”,还是指“本应该发生的事情没有发生”? - o0'.
6
注意:字符串 s 也可以使用大括号进行访问,例如 $str{42},目的相同。然而,这种语法已自 PHP 5.3.0 弃用。请改用方括号,如 $str[42]。 - Tom Haigh
@Lo'oris:$end[$i]{0} 似乎被评估为 null 或 ''。 - dnagirl
@Tom Haigh:既然你指出来了,我确实记得可以通过这种方式访问字符串。但事实证明,如果字符串是一个数字,它就不起作用。例如:$foo=200; $foo[0]!=2; 我认为解决方案是用 substr($foo,1); 替换语法。 - dnagirl
1
@dnagirl: "$foo=200;" 这不是一个字符串。使用 substr() 可能会更慢,而且只能工作是因为 int 隐式转换为字符串。 - Tom Haigh
@Tom Haigh:由于$foo=200; $foo[0] != 2;//=='',当数字的大小未知时,您建议如何获取最左边的数字? - dnagirl
1个回答

9

它是从$end[$i]字符串中获取第一个字符,然后使用该字符作为数组键访问$small数组。

编辑:

由于 $foo=200; $foo[0] != 2;//=='', 当数字的大小未知时,你建议如何获取最左侧的数字?

在PHP中,最简单的方法是使用substr($foo, 0, 1)

如果您使用的是强类型语言,则可以查看我另一篇答案中的一些指标:How can you get the first digit in an int (C#)?


感谢您纠正我对它的理解。B - dnagirl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接