1

私はPHPに少し慣れていないので、これが使用されているのか、推奨されていないのか、あるいは何であれ、わかりません。PHPがこの種の配列をどのように処理するのか、そしてそれを使用すべきかどうか疑問に思っています。

配列は次のようになります。

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

value変数は、周囲のキーの間のどこかにある単一の数値を表します。たとえばvalueOne、からの範囲0x0001000です0x0001FFF。より多くの値が必要になると、同じパターンを使用して配列が拡張されます。

ありがとう!

4

2 に答える 2

4

何も問題はありません。数値でインデックス付けされた配列を使用しているだけですが、キーを定義するために10進表記を使用する代わりに、16進表記を使用しています。PHPは、両方のケース(10進数と16進数)を同じ方法で処理します。

以下の10進数は同等です。

[ 4096 => $valueOne, 8192 => $value ]
于 2012-08-09T16:08:58.013 に答える
2

PHPでは、配列は常に関連付けられています。角括弧イニシャライザー(PHP 5.4のみの構文であるため、ユーザーが使用しないようにする)を除けば、コードについて特に奇妙なことは何もありません。

覚えておくべきことの1つは、foreach()がアイテムを配置された順序で返すことです。$ arr [0x00000010] = $ valueThreeを実行すると、インデックスが0x00001000のアイテムの前に表示されなくなります。この順序の欠如により、キーが2つのキーの間にあるかどうかを判断できなくなります。アイテムを整理するには、ksort()を使用する必要があります。

代わりに、範囲の開始インデックスと終了インデックスを値としてオブジェクトに保存する方がよいでしょう。キーが特定の範囲内にあるかどうかを判断するロジックは、はるかに簡単になります。

foreach($ranges as $range) {
   if($value >= $range->start && $value < $range->end) {
      return $range->value;
   }
}
于 2012-08-09T16:46:03.533 に答える