V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
likai
V2EX  ›  PHP

求助一个 PHP 分配问题

  •  
  •   likai · 2015-06-23 11:15:10 +08:00 · 2322 次点击
    这是一个创建于 3448 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1-1000数值范围

    然后按照百分比来分配。
    百分比个数不固定。人工设置
    可能就是1个:100%
    或者:20% 80%
    也有可能是10% 20% 30% 40%

    比如 如果是80% 20%两个
    然后分配 1-200为20%
    201-1000为80%


    如果是五个20%
    则1-200 201--400 401-600 601-800 801-1000这样分配?

    不知道描述清楚了么?
    求思路
    3 条回复    2015-06-23 11:41:53 +08:00
    hylent
        1
    hylent  
       2015-06-23 11:28:39 +08:00
    ```
    x = 1;
    y = p1 * 10; // 20 * 10 = 200

    x = y + 1; // 201
    y = y + p2 * 10; // 200 + 20 * 10 = 400
    ```

    这个。。
    issac
        2
    issac  
       2015-06-23 11:37:01 +08:00
    数据库存储字段:
    存储时通过implode()转成->"10,20,40"

    取的时候:
    $numArr = array(1000)个数值;
    $percentArr = explode(数据库去读的资料);

    循环$percentArr;
    每次循环用array_slice拆分$numArr;
    需要计算初始key.
    拆分数量通过$percentArr计算

    PS:如果要按照80,20的举例
    循环前排序$percentArr
    alex321
        3
    alex321  
       2015-06-23 11:41:53 +08:00
    好像看起来你针对 1-1000 中的每 1% 都是等分的。
    我需要处理的就是你是按照 20%/80% 来进行分配,还是按照 10%/20%/30%/40% 来进行分类,或者是按照 20%/20%/20%/20%/20% 来进行分配,或者按照类似的比例来进行分类。
    我们设置 100 个单元格,每单元格为 1%。第一次按下鼠标到选中就是第一个分配区间,第二次就是第二个分配区间。
    看你的描述,最小的分配区间都是 10%,那就只需要 10 个单元格了。最终判断鼠标选中的区间比例。

    当然,如果不想做这个稍微有点复杂的前端功能。还可以用简单到没朋友的方式:一个输入框,输入不同的比例数值,中间中 | 或者 , 之类的区分就行。比如,前面的例子分别输入 20|80,10|20|30|40,20|20|20|20|20。甚至考虑到最小的分配区间都是 10%,可以直接把后面的 0 去掉,变成 2|8 之类的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:52 · PVG 18:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.