PHP关联式数组,数字作为键

时间:2012-08-09 16:07:23

标签: php arrays

我对PHP有点新意,我不确定这是用过还是气馁等等。我想知道PHP如何处理这种数组以及我是否应该使用它。

数组看起来像这样。

$arr = [0x00010000 => $valueOne, 0x00020000 => $valueTwo] // and so on

value变量表示位于周围键之间的单个数字。例如。 valueOne的范围是0x00010000x0001FFF。使用相同的模式扩展数组,因为需要更多的值。

谢谢!

2 个答案:

答案 0 :(得分:4)

你正在做的事情没有错,你只是使用数字索引数组,但不是使用十进制表示法来定义键,而是使用十六进制表示法。 PHP以相同的方式处理这两种情况(十进制和十六进制)。

十进制中的以下内容是等效的:

[ 4096 => $valueOne, 8192 => $value ]

答案 1 :(得分:2)

数组在PHP中始终是关联的。除了方括号初始化程序(这是PHP 5.4唯一的语法,所以人们避免使用它)之外,你的代码没什么特别奇怪的。

要记住的一件事是foreach()将按照它们放入的顺序返回项目。如果你以后执行$ arr [0x00000010] = $ valueThree,它将不会出现在项目之前索引0x00001000。这种缺乏秩序将导致无法确定密钥是否落在两个密钥之间。您需要使用kso​​rt()来保持项目的顺序。

您可能最好将范围的起始和结束索引存储为对象中的值。确定密钥是否落在特定范围内的逻辑变得容易得多:

foreach($ranges as $range) {
   if($value >= $range->start && $value < $range->end) {
      return $range->value;
   }
}