今日何かを作っているときに、いくつか興味深い場所を発見したので、書き留めて共有します。いくつかの小さな質問から始めましょう
年齢層は「50~70歳」などと表現できますか?
おそらく、それは非常に簡単だと言うでしょう。1 つは start=>Start age 、もう 1 つは end=>End age の 2 つのフィールドを使用するか、1 つのフィールドで start|end の形式を使用し、in に数値以外を指定します。中央 分離するか、start|start-end を使用します。笑、とにかく方法はたくさんありますが、この時点でアップグレードを要求し、10 ~ 20、25、29 ~ 40 の年齢を表現するように求められた場合、どのように表現しますか?もちろん、10-20|25|29-40 などの文字列を使用して表現することもでき、独自にルールを設定して表現することもできます。しかし、この表現方法を最適化できるでしょうか? 答えは「はい」です。
01 文字列を使用して、非反復年齢間隔を表すことができます。デフォルトは 100 個の 0 で、1 の場合は年齢が存在することを意味し、0 の場合は年齢が存在することを意味します。 , そんな年齢は存在しないということになります。説明を簡単にするために、ここでは 1 個のゼロを 1 個使用して 1 歳から 10 歳を表します。
0111111000 => 2~7歳を意味しますははは、表現するのにとても便利でわかりやすいですか? もちろん、これには欠点もありますが、実際に使用するのは不便で、計算が必要です。0110111010 =>は2~3歳、5~7歳、9歳を意味します
1、2、3、...、199、200からランダムに数字をいくつか選びます。それをどう表現しますか?
もちろん、これを行うには、文字列表現を使用したり、次のように各数値を数字以外で割ったりするなど、さまざまな方法があります: 1|5|100|199。言いたいことは、上記の 1 ~ 200 と同じように、01 の文字列で表されます。その一部を選択する問題では、各位置が 0 または 1 の 200 個の位置の文字列を使用できます。この場合、この情報は 01 の文字列として表されます。 0から10までの例を見てみましょう
0111111000 =>は2、3、4、5、6、7を意味しますもちろん、私が表現したいデータは連続的ではないという人もいるかもしれません。例えば、私は0110111010 =>は2、3、5、6、7、9を意味します
を表現したいのです。
1926、19658、12、5638、8975、965、369、5126、5698、14556上記の数値には非常に大きいものもあれば、非常に小さいものもあり、パターンがありません。合計が 10 を超えない数値にはそれらの最大値が使用されないことを示したいと考えています (たとえば、ここでは 19658 0 です) もちろんそうではありません。この場合、マッピング関係は次のようになります。
リーリー
この時点で、1926、12、5698 の選択された状況を表現したい場合は、次の 01 文字列を使用できます:
1010000010
これにはトラフィックを節約する効果もあることに気づいたかもしれません。ネットワーク送信中に、マッピング関係を確立する必要はなく、対応する 01 文字列のみを送信します。
もちろん、これにはさまざまな意味があります。たとえば、1日を5分のセグメントに分割し、合計288のセグメントを用意しました。このとき、その中からランダムに5分のセグメントをいくつか選択し、288のセグメントを使用しました。独自の長さの 01 文字列を使用して、これが良いかどうかを表現します (笑)。
場合によっては、この 01 文字列表現方法が非常に望ましい場合があり、トラフィックを節約できる場合もあります。
以上、01 string の使い方を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。