我对PHP有点新意,我不确定这是用过还是气馁等等。我想知道PHP如何处理这种数组以及我是否应该使用它。
数组看起来像这样。
$arr = [0x00010000 => $valueOne, 0x00020000 => $valueTwo] // and so on
value
变量表示位于周围键之间的单个数字。例如。 valueOne
的范围是0x0001000
到0x0001FFF
。使用相同的模式扩展数组,因为需要更多的值。
谢谢!
答案 0 :(得分:4)
你正在做的事情没有错,你只是使用数字索引数组,但不是使用十进制表示法来定义键,而是使用十六进制表示法。 PHP以相同的方式处理这两种情况(十进制和十六进制)。
十进制中的以下内容是等效的:
[ 4096 => $valueOne, 8192 => $value ]
答案 1 :(得分:2)
数组在PHP中始终是关联的。除了方括号初始化程序(这是PHP 5.4唯一的语法,所以人们避免使用它)之外,你的代码没什么特别奇怪的。
要记住的一件事是foreach()将按照它们放入的顺序返回项目。如果你以后执行$ arr [0x00000010] = $ valueThree,它将不会出现在项目之前索引0x00001000。这种缺乏秩序将导致无法确定密钥是否落在两个密钥之间。您需要使用ksort()来保持项目的顺序。
您可能最好将范围的起始和结束索引存储为对象中的值。确定密钥是否落在特定范围内的逻辑变得容易得多:
foreach($ranges as $range) {
if($value >= $range->start && $value < $range->end) {
return $range->value;
}
}