数据库里这样子,
id wc we
1 q 3
2 a 0
3 q 3
4 b 1
5 b 1
6 q 2
7 q 2
8 g 3
我要得到:变成
id wc we
1 q 3-1/2
3 q 3-2/2
4 b 1-1/2
5 b 1-2/2
6 q 2-1/2
7 q 2-2/2

解决方案 »

  1.   

    本帖最后由 PhpNewnew 于 2012-02-03 11:31:21 编辑
      

  2.   

    重新看这个
    数据库里这样子,
    id wc wd
    1  23   234
    2  24   235
    3  24   235
    4  25   235
    5  25  235
    6  37  456
    7  37  456变成,让重复的区分开来
    id wc wd
    1  23   234
    2  24   235-1/2
    3  24   235-2/2
    4  25   235-1/2
    5  25  235-2/2
    6  37  456-1/2
    7  37  456-2/2
      

  3.   


    用sql 直接完成我看是没可能了 只能读出数据来处理。
      

  4.   


    好汉,你故洒家写个函数吧
    我用sql 读出来 
      

  5.   

    蛋痛了数个小时终于写好了,我擦!这个时候十分想念怪署黍啊...感觉代码写得太恶心了。
    得到结果 循环数组拼装成 SQL update 数据库。搞成函数什么的就自己劳动啦,代码看不懂也莫问我,咔咔,太费脑子了.Array
    (
        [0] => 1 23 234
        [1] => 2 24 235-1/2
        [2] => 3 24 235-2/2
        [3] => 4 25 235-1/2
        [4] => 5 25 235-2/2
        [5] => 6 37 456-1/2
        [6] => 7 37 456-2/2
    )
    $array = array('1 23 234', '2 24 235', '3 24 235', '4 25 235', '5 25 235', '6 37 456', '7 37 456');
    $newArray = array();
    foreach ($array as $value) {
        preg_match('/^[0-9]+\s([0-9]+\s[0-9]+$)/', $value, $mArray);
        $newArray[] = $mArray[1];
    }
    $countArray = array_count_values($newArray);
    $fixArray = array();$i = 1;
    foreach ($newArray as $newkey => &$value) {
        $newArrayKey = array();
        if (array_key_exists($value, array_flip($newArray))) {
            $newArrayKey = array_keys($newArray, $value);
            if (count($newArrayKey) !== 1) {
                $tmp = array_search($newkey, $newArrayKey);
                $tmp = intval($tmp) + 1;
                $fixArray[] = $i . ' ' . $value . '-' . $tmp . '/' . $countArray[$value];
            } else {
                $fixArray[] = $i . ' ' . $value;
            }
            $i++;
        }}
    print_r($fixArray);